计算机二级c语言机试题库.docx
《计算机二级c语言机试题库.docx》由会员分享,可在线阅读,更多相关《计算机二级c语言机试题库.docx(38页珍藏版)》请在冰豆网上搜索。
![计算机二级c语言机试题库.docx](https://file1.bdocx.com/fileroot1/2023-2/13/b4db3599-8186-43fa-a502-fbb9641c4e2a/b4db3599-8186-43fa-a502-fbb9641c4e2a1.gif)
计算机二级c语言机试题库
计算机二级c语言机试题库来源:
袁伟的日志
下列给定程序中,函数fun的功能是:
计算S=f(-n)+f(-n+1)+…+f(0)+f
(1)+f
(2)+…f(n)的值。
例如,当n为5时,函数值应为10.407143。
f(x)函数定义如下:
f(x)=请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#include#include#include/*************found**************/f(doublex){if(x==0.0||x==2.0)return0.0;elseif(x<0.0)return(x-1)/(x-2);elsereturn(x+1)/(x-2);}doublefun(intn){inti;doubles=0.0,y;for(i=-n;i<=n;i++){y=f(1.0*i);s+=y;}/*************found**************/returns}voidmain(){system("CLS");printf("%f\n",fun(5));}【参考答案】
(1)错误:
f(doublex)正确:
doublef(doublex)
(2)错误:
returns正确:
returns;
t=1+1/2+1/3+1/4+…+1/m例如,若输入5,则应输出2.283333。
请改正程序中的错误,使它能计算出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#include#includedoublefun(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;
下列给定程序中,函数fun的功能是:
分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s输入:
AaaaBBb123CCccccd,则应输出结果:
upper=5,lower=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)++;
下列给定程序中函数fun的功能是:
计算正整数num各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#includelongfun(longnum){/*************found**************/longk;do{k*=num%10;/*************found**************/num\=10;}while(num);return(k);}
main(){intn;printf("\Pleaseenteranumber:
");scanf("%ld",&n);printf("\n%ld\n",fun(n));}【参考答案】
(1)错误:
longk;正确:
longk=1;
(2)错误:
num\=10;正确:
num/=10;
下列给定程序中函数fun的功能是:
计算n!
。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#includedoublefun(intn){doubleresult=1.0;/*************found**************/ifn==0return1.0;while(n>1&&n<170)/*************found**************/result=n--;returnresult;}
voidmain(){intn;printf("InputN:
");scanf("%d",&n);printf("\n\n%d!
=%lf\n",n,fun(n));}【参考答案】
(1)错误:
ifn==0正确:
if(n==0)
(2)错误:
result=n--;正确:
result*=n--;
下列给定的程序中,函数fun的功能是:
计算并输出k以内最大的10个能被13或17整除的自然数之和。
k的值由主函数传入,若k的值为500,则函数的值为4622。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#include#includeintfun(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)错误:
缺少大括号正确:
加}
下列给定程序中,函数fun()的功能是:
根据整型形参m的值,计算如下公式的值:
请改正函数fun()中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#include#includedoublefun(intm){doubley=1.0;intI;/*************found**************/for(I=2;I【参考答案】
(1)错误:
for(i=2;ifor(i=2;i<=m;i++)
(2)错误:
y-=1/(i*i);正确:
y-=1.0/(i*i);
在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
下列给定程序中,函数fun的功能是:
计算数组元素中值为正数的平均值(不包括0)。
例如,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#includedoublefun(intx[]){/*************found**************/intsum=0.0;intc=0,I=0;while(x[I]!
=0){if(x[I]>0){sum+=x[I];c++;}I++;}/*************found**************/sum=sum\c;returnsum;}【参考答案】
(1)错误:
intsum=0.0;正确:
doublesum=0.0;
(2)错误:
sum\=c;正确:
sum/=c;
下列给定程序中,函数fun的功能是:
判断一个整数m是否是素数,若是返回1,否则返回0。
在main函数中,若fun()返回1则输出"YES",若fun()返回0则输出"NO!
"。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#include#includeintfun(intm){intk=2;while(k<=m&&(m%k))/*************found**************/k++/*************found**************/if(m=k)return1;elsereturn0;}voidmain(){intn;system("CLS");printf("\nPleaseentern:
");scanf("%d",&n);if(fun(n))printf("YES\n");elseprintf("NO!
\n");}【参考答案】
(1)错误:
k++正确:
k++;
(2)错误:
if(m=k)正确:
if(m==k)
下列给定程序中,函数fun的功能是:
按如下递归公式求函数值。
例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include/*************found**************/intfun(n){intc;/*************found**************/if(n=1)c=10;elsec=fun(n-1)+2;return(c);}
voidmain(){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)
下列给定程序中,函数fun的功能是:
用递归算法计算斐波拉契级数列中第n项的值。
从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入7,该项的斐波拉契级数值为13。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#includelongfun(intg){/*************found**************/switch(g);{case0:
return0;/*************found**************/case1;case2:
return1;}return(fun(g-1)+fun(g-2));}voidmain(){longfib;intn;printf("Inputn:
");scanf("%d",&n);printf("n=%d\n",n);fib=fun(n);printf("fib=%d\n\n",fib);}【参考答案】
(1)错误:
switch(g);正确:
去掉分号
(2)错误:
case1;case2:
return1;正确:
case1:
case2:
return1;
下列给定程序中,函数fun的功能是:
求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#include#defineN20/*************found**************/voidfun(int*a,intn);{intI,m,t,k;for(I=0;Ia[m])m=k;t=a[I];a[I]=a[m];a[m]=t;}}main(){intb[N]={11,5,12,0,3,6,9,7,10,8},n=10,i;system("CLS");for(i=0;i(1)错误:
voidfun(int*a,intn);正确:
voidfun(int*a,intn)
(2)错误:
m=0;正确:
m=i;
下列给定程序中,函数fun的功能是:
将十进制正整数m转换成进制数,并按位输出。
例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
请改正函数fun中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#include/*************found**************/voidfun(intm,intk);{intaa[20],i;for(i=0;m;i++){/*************found**************/aa[i]=m/k;m/=k;}for(;i;i--)/*************found**************/printf("%d",aa[i]);}main(){intb,n;printf("\nPleaseenteranumberandabase:
\n");scanf("%d%d",&n,&b);fun(n,b);printf("\n");}
【参考答案】
(1)错误:
voidfun(intm,intk);正确:
voidfun(intm,intk)
(2)错误:
aa[i]=m/k;正确:
aa[i]=m%k;(3)错误:
printf("%d",aa[i]);正确:
printf("%d",aa[i-1]);
下列给定程序中,函数fun的功能是:
计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。
其中x和y不相等,z和y不等。
例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#include#include/*************found**************/#defineFU(m,n)(m/n)floatfun(floata,floatb,floatc){floatvalue;value=FU(a+b,a-b)+FU(c+b,c-b);/*************found**************/return(Value);}voidmain(){floatx,y,z,sum;printf("Inputxyz:
:
");scanf("%f%f%f",&x,&y,&z);printf("x=%f,y=%f,z=%f\n",x,y,z);if(x==y||y==z){printf("Dataerror!
\n");exit(0);}sum=fun(x,y,z);printf("Theresultis:
%5.2f\n",sum);}【参考答案】
(1)错误:
#defineFU(m,n)(m/n)正确:
#defineFU(m,n)(m)/(n)
(2)错误:
return(Value);正确:
return(value);
下列给定程序中函数fun的功能是:
先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
例如,当s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#include#include#includevoidfun(char*s,char*t){intI,s1;s1=strlen(s);for(I=0;I");scanf("%s",s);fun(s,t);printf("Theresultis:
%s\n",t);}【参考答案】
(1)错误:
t[i]=s[s1-1];正确:
t[i]=s[s1-1-i];
下列给定程序中,函数fun的功能是:
求三个数的最小公倍数。
例如,给变量x1、x2、x3分别输入15、11、2,则输出结果应当是330。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#includeintfun(intx,inty,intz){intj,t,n,m;/*************found**************/j=1;t=m=n=1;/*************found**************/while(t!
=0&&m!
=0&&n!
=0){j=j+1;t=j%x;m=j%y;n=j%z;}returnj;}voidmain(){intx1,x2,x3,j;printf("Inputx1x2x3:
");scanf("%d%d%d",&x1,&x2,&x3);printf("x1=%d,x2=%d,x3=%d\n",x1,x2,x3);j=fun(x1,x2,x3);printf("Theminimalcommonmultipleis:
%d\n",j);}【参考答案】
(1)错误:
j=1;正确:
j=0;
(2)错误:
while(t!
=0&&m!
=0&&n!
=0)正确:
while(t!
=0||m!
=0||n!
=0)
下列给定程序中,函数fun的功能是:
从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。
例如输入8名学生的成绩:
80.5607290.59851.58864则低于平均分的学生人数为4(平均分为75.5625)。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include#include#include#defineN20intfun(float*s,intn,float*aver){floatave,t=0.0;intcount=0,k,i;for(k=0;k");scanf("%d",&m);printf("\nPleaseenter%dmark:
\n",m);for(i=0;i%d\n",fun(s,m,&aver));printf("Ave=%f\n",aver);}【参考答案】
(1)错误:
t=s[k];正确:
t+=s[k];
(2)错误:
*aver=&ave;正确:
*aver=ave;
下列给定程序中,函数fun的功能是:
在字符串的最前端加入n个*号,形成新串,并且覆盖原串。
注