全国计算机二级C语言试题库.docx
- 文档编号:7194657
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:118
- 大小:50.20KB
全国计算机二级C语言试题库.docx
《全国计算机二级C语言试题库.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C语言试题库.docx(118页珍藏版)》请在冰豆网上搜索。
全国计算机二级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);
else
return(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
#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;
下列给定程序中,函数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
#include
longfun(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
#include
doublefun(intn)
{doubleresult=1.0;
/*************found**************/
ifn==0
return1.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
#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)错误:
缺少大括号正确:
加}
下列给定程序中,函数fun()的功能是:
根据整型形参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;i 正确: for(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 #include doublefun(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 #include intfun(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; else c=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函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include longfun(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;I { /*************found**************/ m=0; for(k=I+1;k if(a[k]>a[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 printf("%d",b[i]); printf("\n"); fun(b,n); for(i=0;i printf("%d",b[i]); printf("\n"); } 【参考答案】 (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 #include voidfun(char*s,char*t) { intI,s1; s1=strlen(s); for(I=0;I /*************found**************/ t[I]=s[s1-1]; for(I=0;I t[s1+I]=s[I]; t[2*s1]='\0'; } voidmain() {chars[100],t[100]; system("CLS"); printf("\nPleaseenterstrings: "); 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函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include intfun(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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国计算机 二级 语言 试题库