1.2下列给定程序中,函数fun的功能是:
分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s输入:
AaaaBBb123CCccccd,则应输出结果:
upper=5,1ower=9。
请改正程序中的错误,使它能计算出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
/********found********/
voidfun(char*s,inta,intb)
{
while(*s)
{
/********found********/
if(*s>='A'&&*s<='z')
a++;
/********found********/
if(*s>='a'&&*s<='z')
b++;
s++;
}
}
main()
{
chars[100];
intupper=0,lower=0;
printf("\nPleaseastring:
");
gets(s);
fun(s,&upper,&lower);
printf("\nupper=%dlower=%d\n",upper,lower);
(1)错误:
voidfun(char*s,inta,intb)正确:
voidfun(char*s,int*a,int*b)
(2)错误:
a++;正确:
(*a)++;
(3)错误:
b++;正确:
(*b)++;
1.3请编写一个函数voidfun(char*tt,intpp[]),统计在tt字符串中"a"到"z"26个字母各自出现的次数,并依次放在pp所指数组中。
例如:
当输入字符串abcdefghabcdeabc后,程序的输出结果应该是:
333221110000000000000000000
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
voidfun(char*tt,intpp[])
{
}
voidmain()
{
charaa[1000];
intbb[26],k;
system("CLS");
printf("\nPleaseenteracharstring:
");
scanf("%s",aa);
fun(aa,bb);
for(k=0;k<26;k++)
printf("%d",bb[k]);
printf("\n");
答案voidfun(char*tt,intpp[])
{
inti;
for(i=0;i<26;i++)
pp[i]=0;/*初始化pp数组各元素为0*/
for(;*tt!
='\0';tt++)
if(*tt>='a'&&*tt<='z')
pp[*tt-'a']++;/*将tt字符串中'a'到'z'26个字母各自出现的次数,依次放在pp数组中,任一个小写字母减去'a'后所得结果正好是它对应的下标*/
}
2.1请补充函数fun,它的功能是:
计算并输出n(包括n)以内所有能被3或7整除的自然数的倒数之和。
例如,在主函数中从键盘给n输入30后,输出为:
s=1.226323。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
doublefun(intn)
{
inti;
doublesum=0.0;
for(i=1;_【1】;i++)
if(i%3==0_【2】_i%7==0)
sum+=_【3】_/i;
returnsum;
}
main()
{
intn;
doubles;
printf("\nInputn:
");
scanf("%d",&n);
s=fun(n);
printf("\n\ns=%f\n",s);
}
【1】i<=n【2】||【3】1.0或(double)1
2.2下列给定程序中,函数fun()的功能是:
根据整型形参m的值,计算如下公式的值。
t=1-1/(2×2)-1/(3×3)-…-1/(m×m)
请改正函数fun()中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
doublefun(intm)
{doubley=1.0;
intI;
/*************found**************/
for(I=2;I/*************found**************/
y-=1/(I*I);
return(y);
}
voidmain()
{intn=5;
system("CLS");
printf("\nTheresultis%1f\n",fun(n));
}
(1)错误:
for(I=2;Ifor(I=2;I<=m;I++)
(2)错误:
y-=1/(I*I);正确:
y-=1.0/(I*I);
2.3请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:
将大于整数m且紧靠m的k个素数存入所指的数组中。
例如,若输入17,5,则应输出19,23,29,31,37。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
voidfun(intm,intk,intxx[])
{
}
voidmain()
{
intm,n,zz[1000];
system("CLS");
printf("\nPleaseentertwointegers:
");
scanf("%d%d",&m,&n);
fun(m,n,zz);
for(m=0;mprintf("%d",zz[m]);
printf("\n");
}
答案voidfun(intm,intk,intxx[])
{
inti,j,n;
for(i=m+1,n=0;n{for(j=2;j
if(i%j==0)break;
if(j>=i)/*如果是素数,放入数组xx中*/
xx[n++]=i;
}
}
3.1给定程序的功能是:
求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:
圆面积公式为:
S=πr2,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的半径值:
19.527,输出为:
s=598.949991。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仪在横线上填入所编写的若干表达式或语句。
试题程序:
#include
doublefun(doubler)
{
return3.14159*_【1】_/2.0;
}
main()
{
doublex;
printf("Enterx:
");
scanf("%lf",_【2】_);
printf("S=%lf\n",fun(_【3】_));
}
【1】r*r【2】&x【3】x
3.2下列给定程序中,fun函数的功能是:
根据形参m,计算下列公式的值。
t=1+1/2+1/3+1/4+…+1/m
例如,若输入5,则应输出2.283333。
请改正程序中的错误,使它能计算出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
doublefun(intm)
{
doublet=1.0;
intI;
for(I=2;I<=m;I++)
/*************found**************/
t+=1.0/k;
/*************found**************/
returnI;
}
voidmain()
{intm;
system("CLS");
printf("\nPleaseenter1integernumber:
");
scanf("%d",&m);
printf("\nTheresultis%1f\n",fun(m));
}
(1)错误:
t+=1.0/k;正确:
t+=1.0/I;
(2)错误:
returnI;正确:
returnt;
3.3编写函数fun,函数的功能是:
根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。
S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)
例如:
若n的值为11时,函数的值为1.833333。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#include
floatfun(intn)
{
}
voidmain()
{
intn;
floats;
system("CLS");
printf("\nPleaseenterN:
");
scanf("%d",&n);
s=fun(n);
printf("Theresultis:
%f\n",s);
}
答案floatfun(intn)
{
inti,s1=0;
floats=0.0;
for(i=1;i<=n;i++)
{s1=s1+i;/*求每一项的分母*/
s=s+1.0/s1;/*求多项式的值*/
}
returns;
}
4.1给定程序的功能是:
计算并输出下列级数的前N项之和SN,直到SN大于q为止,q的值通过形参传入。
例如,若q的值为50.0,则函数值为50.416687。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
doublefun(doubleq)
{
intn;
doubles;
n=2;
s=2.0;
while(s【1】q)
{
s=s+(double)(n+1)/n;
【2】;
}
printf("n=%d\n",n);
【3】;
}
main()
{
printf("%f\n",fun(50));
}
【1】<=【2】n++或n+=1或n=n+1【3】returns或return(s)
4.2下列给定的程序中,函数fun的功能是:
计算并输出k以内最大的10个能被13或17整除的自然数之和。
K的值由主函数传入,若k的值为500,则函数的值为4622。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
intfun(intk)
{intm=0,mc=0,j;
while((k>=2)&&(mc<10))
{
/*************found**************/
if((k%13=0)||(k%17=0))
{m=m+k;mc++;}
k--;
/*************found**************/
returnm;
}
voidmain()
{system("CLS");
printf("%d\n",fun(500));
}
(1)错误:
if((k%13=0)||(k%17=0))
正确:
if((k%13==0)||(k%17==0))
(2)错误:
缺少大括号正确:
加}
4.3编写函数fun,它的功能是:
根据以下公式求p的值,结果由函数值带回。
m与n为两个正数且要求m>n。
P=m!
/(n!
(m-n)!
),例如:
m=12,n=8时,运行结果为495.000000。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
floatfun(intm,intn)
{
}
voidmain()
{
system("CLS");
printf("p=%f\n",fun(12,8));
}
答案floatfun(intm,intn)
{
inti;
doublep=1.0;
for(i=1;i<=m;i++)p=p*i;/*求m!
*/
for(i=1;i<=n;i++)p=p/i;/*求m!
/n!
*/
for(i=1;i<=m-n;i++)p=p/i;/*求m!
/(n!
(m-n)!
)*/
returnp;
}
5.1请补充函数fun,该函数的功能求能是:
整除x且是偶数的数,把这些数保存在数组bb中,并按从大到小的顺序输出。
例如当x=20时,依次输出:
20 10 4 2。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#include
voidfun(intk,intbb[])
{
intI;
intj=0;
for(【1】;I<=k;I++)
{
if(【2】)
bb[j++]=I;
}
printf("\n\n");
for(I=【3】;I>=0;I--)
printf("%d",bb[I]);
}
voidmain()
{
intk=1;
intbb[100];
system("CLS");
printf("\nPleaseinputX=");
scanf("%d",&k);
fun(k,bb);
}
【1】I=1【2】k%I==0&&I%2==0【3】--j或j--或j=j-1或j-=1
5.2下列给定程序中,函数fun的功能是:
根据整型形参m,计算如下公式的值。
例如,若m中的值为5,则应输出:
1.463611。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
doublefun(intm)
{
doubley=1.0;
inti;
/********found********/
for(i=2;i/********found********/
y+=1/(i*i);
return(y);
}
main()
{
intn=5;
printf("\nTheresultis%1f\n",fun(n));
}
(1)错误:
for(i=2;ifor(i=2;i<=m;i++)
(2)错误:
y+=1/(i*i)正确:
y+=1.0/(i*i)
5.3编写函数fun,它的功能是:
利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。
xn+1=cos(xn)
迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,把x1的值赋给x0;
(3)x1=cos(x0),求出一个新的xl;
(4)若x0-x1,的绝对值小于0.000001,则执行步骤(5),否则执行步骤
(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出结果Root=0.739085。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仪在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
floatfun()
{
}
main()
{
floatf=fun();
printf("Root=%f\n",f);
}
答案floatfun()
{
floatx1=0.0,x0;
do
{
x0=x1;
x1=cos(x0);
}
while(fabs(x0-x1)>=1e-6);
returnx1;
}
6.1程序的功能是计算s=!
!
。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
试题程序:
#include
longfun(intn)
{
inti;
longs;
s=【1】_;
for(i=1;i<=n;i++)
s=【2】;
returns;
}
main()
{
longs;
intk,n;
scanf("%d",&n);
s=【3】;
for(k=0;k<=n;k++)
s=【4】;
printf("%id\n",s);
}
【1】1【2】s*i或i*s【3】0【4】s+fun(k)
6.2下列给定程序中,函数fun的功能是:
按如下递归公式求函数值。
例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
/********found********/
intfun(n)
{
intc;
/********found********/
if(n=1)
c=10;
else
c=fun(n-1)+2;
return(c);
}
main()
{
intn;
printf("Entern:
");
scanf("%d",&n);
printf("Theresult:
%d\n\n",fun(n));
}
(1)错误:
intfun(n)正确:
intfun(intn)
(2)错误:
if(n=1)正确:
if(n==1)
6.3请编写函数fun,函数的功能是:
求出二维数组周边元素之和,作为函数值返回。
二维数组中的值在主函数中赋予。
例如:
若二维数组中的值为
13579
29994
69998
13570
则函数值为61。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#defineM4
#defineN5
intfun(inta[M][N])
{
}
voidmain()
{
intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},
{6,9,9,9,8},{1,3,5,7,0}};
inti,j,y;
system("CLS");
printf("Theoriginaldatais:
\n");
for(i=0;i{for(j=0;jprintf("%6d",aa[i][j]);
printf("\n");
}
y=fun(aa);
printf("\nThesun:
%d\n",y);
printf("\n");
}
答案intfun(inta[M][N])
{
inti,j,sum=0;
for(i=0;ifor(j=0;jif(i==0||i==M-1||j==0||j==N-1)/*只要下标中有一个为0或M-1或N-1,则它一定是周边元素*/
sum=sum+a[i][j];/*将周边元素相加*/
returnsum;
}
7.1请补充函数fun,该函数的功能是:
求不超过给定自然数的所有偶数之和。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
intfun(intx)
{
inti,s;
s=_【1】;
for(i=2;【2】;i+=2)
s+=i;
returns;
}
main()
{
intn;
do
{
printf("\nPleaseenternaturalnumbersn:
");
scanf("%d",&n);
}while(n<=0);
printf("\n不超过给定自然数%d的各偶数之和为%d\n",n,fun(n));
}