《全国计算机二级C机试题库.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C机试题库.docx(175页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下列给定程序中,函数fun的功能是:计算S=f (-n)+f (-n+l)+f(0) +f +f(2)+f(n)的值。例如,当n为5时,函数值应为10. 407143c f(x)函数定义如下:f (x) =请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include #include #include #include /*found*/f(double x)(if (x=0. 0| |x=2. 0)return 0. 0;else if (x0.0)return(x-1)/ (x-2);elsereturn(x+1)/(
2、x-2);)double fun(int n)(int i; double s=0. 0, y;for(i=-n; i=n;i+) y=f (1. 0*i); s+=y;return s)void main() system(CLS);printf(%fn,fun (5);【参考答案】(1)错误:f (double x) 正确:double f (double x)(2)错误:return s正确:return s;t=1+1/2+1/3+1/4+l/m例如,若输入5,则应输出2. 283333c请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改
3、程序的结构。试题程序:Sinclude #include Sinclude double fun(int m)!double t=l. 0;for(I=2;I=m;I+)t+=l. 0/k;/* foiind*/ return I;)void main()int m;system(CLS);printf (z,nPlease enter linteger number: ); scanf(%d, &m);printf (/znThe result isfun(m);)【参考答案】 错误:t+=L 0/k; 正确:t+=L 0/1;(2)错误:return I;正确:return t;下列给定程
4、序中,函数fun的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AaaaBBbl23CCccccd,则应输出结果:upper=5, lower=9o请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: #include#include/*found*/void fun (char *s, int a, int b)(while (*s)(/*found*/ if(*s=A & *s=,a* & *s=z)b+;s+;)main()Ichar s100;int upper=0, lower=0;prin
5、tf(z/nplease a string :); gets(s);fun(s, &upper, &lower);printf (n upper=%d lower=%dnz,, upper, lower);【参考答案】(1)错误:void fun (char *s, int a, int b) 正确:void fun (char *s, int *a, int *b)错误:a+;正确:(*a) +; 错误:b+;正确:(*b)+;下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。例如, 若输入252,则输出应该是20o若输入202,则输出应该是0。请改正程序中的错误,使它能得
6、出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include long fun(long num) !/*found*/ long k;do ( k *=num%10;/*found*/ num =10;while(num);return(k);main()(int n;printf(z/Please enter a number: );scanf &n);printf (z,n%ldnz,, fun (n);【参考答案】(1)错误:long k;正确:long k=l;(2)错误:num=10;正确:num/ =10;下列给定程
7、序中函数fun的功能是:计算n!。例如,给n输入5,则输出 120. 000000 o请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:Sinclude #include double fun(int n) double result =1.0;/*found*/if n=0return 1. 0;while(nl&n170)/*found*/result=n一;return result;)void main()iint n;printf(Input N:);scanf (%d,&n);printf (z,nn%d!zz%
8、lfnz,, n, fun (n);)【参考答案】(1)错误:if n=0正确:if(n=0)(2)错误:result =n-;正确:result *=n-;下列给定的程序中,函数fun的功能是:计算并输出k以内最大的10个能被13 或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数的值为 4622 o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include int fun(int k) int m=0, mc=O, j;while(k=2)&(mc10)(/* found*/if
9、(k%13=0)|(k%17=0) m=m+k;mc+;k;/*found*/return m;)void main()system(CLS);printf (z%dn , fun(500);)【参考答案】错误:if(k%13=0) | (k%17=0)正确:if(k%13=0) | | (k%17=0)(2)错误:缺少大括号 正确:加I )卜一列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值:请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:Sinclude #include Sinclu
10、de double fun(int m)double y=l.0;int I;/*found*/for(1=2;Im;I+)/*found*/y-=l/(I*I);return(y);)void main()int n=5;system(CLS);printf (z,nThe result isfun(n);)【参考答案】 错误:for (i=2; im; i+) 正确:for (i=2; i=m; i+) (2)错误:y-=l/(i*i);正确:y-=L O/(i*i);在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素 中。下列给定程序中,函数fun的功能是:计算数组元
11、素中值为正数的平均值(不 包括0)。例I口,数组中元素的值依次为39, -47, 21, 2, -8, 15, 0,则程序的运行结果 为 19.250000c请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include double fun(int x) !/*found*/int sum=0. 0;int c=0, 1=0;while(xI !=0)(if(xI0)(sum+=xI;C+;I+;/*found*/sum=sumc;return sum;)【参考答案】(1)错误:int sum=O. 0
12、; 正确:double sum=0. 0; 错误:sum=c;正确:sum/=c;下列给定程序中,函数fun的功能是:判断一个整数m是否是素数,若是返回1,否 则返回0o在main函数中,若fun()返回1则输出YES”,若fun()返回0则输出 N0!。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include Sinclude #include int fun(int m) int k=2;while (k=m&(m%k)/*found*/k+if(m=k)return 1;else return 0;)void
13、main() int n;system(CLS);printf (,znPlease enter n:);scanf (%d, &n);if(fun (n) printf(YESn);else printfCN0!nz/);)【参考答案】(1)错误:k+ 正确:k+;错误:if (m=k) 正确:i f (m=k)下列给定程序中,函数fun的功能是:按如下递归公式求函数值。例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: #include int fun(n)
14、(int c;/*found*/if(n=l)c=10;elsec=fun(n-l)+2;return (c);void main()!int n;printf(Enter n: );scanf (/z%d,z, &n);printf (z,The result: %dnn , fun(n);)【参考答案】(1)错误:int fun(n) 正确:int fun (int n)错误:if (n=l) 正确:if (n=l)下列给定程序中,函数fun的功能是:用递归算法计算斐波拉契级数列中第n项的 值。从第一项起,斐波拉契级数序列为1,1,2, 3, 5, 8,13, 21,例如,若给n输入7,该
15、项的斐波拉契级数值为13。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include long fun(int g)(/*found*/switch(g);case 0:return 0;/*found*/case 1; case 2:return 1;)return (fun(g-l)+fun(g-2);)void main()Ilong fib; int n;printf (z,Input n:); scanf &n);printf (/,n=%dn,/, n);fib=fun(n);printf (,zfib=%
16、dnn/z, fib);)【参考答案】 (1)错误:switch (g);正确:去掉分号错误:case 1;case 2: return 1;正确:case 1 :case 2: return 1;下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a0中的数对调、次最大数和al中的数对调。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #define N 20/*found*/void fun(int *a, int n);!int I, m, t, k;for(
17、1=0; In;I+)(/*found*/m=0;for(k=I+l; ka m)m=k;t=aI;aI=am;main()int bN = ll,5, 12, 0,3,6, 9,7, 10,8,n=10, i;system(CLS);for (i=0; in; i+)printf (,z%dbi);printf(n);fun (b, n);for(i=0; in; i+)printf (,z%d , bi);printf (n);【参考答案】(1)错误:void fun(int *a, int n);正确:void fun(int *a, int n)错误:m=0;正确:m=i;下列给定程序
18、中,函数fun的功能是:将十进制正整数m转换成 进制数,并按位输 出例如,若输入8和2,则应输出1000 (即十进制数8转换成二进制表示是1000) o 请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include Sinclude /*found*/void fun(int m, int k); int aa20, i;for (i=0;m;i+)(/* found*/aai=m/k;m/二k;for (; i ; i-)/*found*/printfaai);)main()int b, n;printf CAn
19、Please enter a number and a base: nz);scanf (z/%d%dz/, &n, &b);fun (n, b);printf (n );【参考答案】(1)错误:void fun(int m, int k);正确:void fun(int m, int k)(2)错误:aai=m/k ;正确:aai= m%k;(3)错误:printfaai);正确:printf aai-l);下列给定程序中,函数fun的功能是:计算函数F(x, y, z) = (x+y)/(x-y) + (z+y)/(z-y)的值。其中 x 和 y 不相等,z 和 y 不等。例 如,当x的值
20、为9, y的值为11, z的值为15时,函数值为-3.50o 请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include /*found*/#define FU(m,n) (m/n)float fun (float a, float b, float c) float value;value=FU(a+b, a-b)+FU(c+b, c-b);/*found*/return (Value);void main() float x, y, z, sum;printf (z,Input
21、x y z: );scanf (z,%f%f%fz,, &x, &y, &z);printf (x=%f, y=%f, z=%fn , x, y, z);if(x=y|y=z) printf (z,Data error! n );exit (0);sum=fun (x, y, z);printf (,zThe result is:%5. 2fn ,sum);)【参考答案】(1)错误:#def ine FU (m, n) (m/n)正确:#define FU (m, n) (m) / (n)(2)错误:return (Value);正确:return (value);下列给定程序中函数fun的功
22、能是:先将在字符串s中的字符按逆序存放到t串 中,然后把s中的字符按正序连接到t串的后面。例如,当s中的字符串为ABCDE 时,则t中的字符串应为EDCBAABCDEo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include Sinclude void fun (char *s, char *t )(int I, si;sl=strlen(s);for (1=0; Ksl; I+)/*found*/ tI=ssl-l;for (I=0;Ksl;I+)tsl+I=sI;t2*sl= 0;)void m
23、ain()char s100, t100;system (CLS);printf (z,nPlease enter string s: ); scanf (z/%s,z, s);fun (s, t);printf (The result is: %sn, t);)【参考答案】 (1)错误:;正确:ti=sslT-i;下列给定程序中,函数fun的功能是:求三个数的最小公倍数。例如,给变量xl、 x2、x3分别输入15、11、2,则输出结果应当是330。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include int f
24、un(int x, int y, int z) int j, t, n, m;/*found*/j二l;t=;/*found*/while (t!=0 & m!=0 & n!=0)(j=j+l;t=j%x;m=j%y;n=j%z;return j;)void main()int xl, x2, x3, j;printf (Input xl x2 x3:);scanf(%d%d%d”, &xl,&x2,&x3);printf (xl=%d, x2=%d, x3=%d n”, xl, x2, x3);j=fun(xl, x2, x3);printf (/zThe minimal connnon m
25、ultiple is: %dn, j);)【参考答案】错误:j=l; 正确:j=0;(2)错误:while (t!=0 & m!=0 & n!=0)正确:while (t!=0 | m!=0 n!=0)下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学 生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如 输入8名学生的成绩:80.5 60 72 90. 5 98 51.5 88 64则低于平均分的学生人数为4 (平均分为75. 5625)。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
26、试题程序:Sinclude Sinclude #include Sdefine N 20 int fun(float *s, int n, float *aver) float ave , t=0. 0;int count=0, k, i;for(k=0;kn;k+)/* foiind*/t=sk;ave=t/n;for (i=0;in;i+)if(siave) count+;/*found*/*aver=&ave;return count;)void main() float s30, aver;int m, i;system(CLS);printf (,znPlease enter m:
27、);scanf (,z%d,z, &m);printf (z,nPlease enter %d mark :for(i=0;im;i+) scanf(%f”,s+i);printf (,znThe number of students :%dn,z, fun (s, m, &aver);printf (z,Ave=%fnz,, aver);(2)错误:*aver=&ave; 正确:*aver=ave;下列给定程序中,函数fun的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79o请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函
28、数,不得增行或删行,也不得更改程序的结构。试题程序:Sinclude #include #include void fun (char s , int n)!char a80, *p;int I;/*found*/s=p;for(I=0;In;I+) aI= ;doaI=*p;/*found*/一填空.while(*p); aI=,O);strcpy(s, a);)void main ()int n;char s80;system(CLS);printf(/znEnter a string: );gets(s);printf (/znThe string:%sn”, s);printf(z/n
29、Enter n (number of*):);scanf(%d, &n);fun(s, n);printf(nThe string after inster:%sn, s);)【参考答案】(1)错误:s=p; 正确:p=s;(2)应填 p+;或+p;或 p+=l;或 p=p+1;(3)错误:ai= 0);正确:ai= 0;或 ai=0下列给定程序中,函数fun的功能是:册赊字符串s中所有空白字符(包括Tab符、 回车符及换行符)。输入字符串时用#结束输入。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #i
30、nclude fun(char *p) int i, t; char c 80;for (i=0, t=0;pi ;i+)if(!isspace(*(p+i) ct+=pi;/*found*/strcpy (p, c);void main()char c, s 80;int i=0;printf (z,Input a string:);c=getchar ();while(c!=,#) si=c; i+;c=getchar () ;si八O;fun(s);puts (s);)【参考答案】下列给定程序中,函数fun的功能是:先从键盘上输入一个3行、3列的矩阵的各 个元素的值,然后输出主对角线元素
31、之和。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include void fun()int a33, sum;int i, j;/*found*/sum=l;for (i=0;i3;i+) for (j=0;j3;j+)/*found*/scanfaij);)for(i=0;i3;i+)sum=sum+aii;printf (z,Sum=%dnz,, sum);)void main() fun();【参考答案】(1)错误:sum=l; 正确:sum=O;错误:scanf (级d”,正确:scanf &ai j)
32、;下列给定程序中函数fun的功能是:求出字符串中最后一次出现的子字符串的地 址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数 值为NULLo例如,当字符串中的内容为abcdabfabcdx, t中的内容为ab时,输出 结果应是abcdxo当字符串中的内容为abcdabfabcdx, t中的内容为abd时,则程 序输出未找到的信息Not found!请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include Sinclude char *fun (char *s
33、, char *t)(char *p,*r,*a;/*found*/a=Null;while(*s)while (*r)/*found*/if(r=p) r+;p+;else break;if(*r=O) a=s;s+;)return a;)void main()char s100, t100, *p;system(CLS);printf (z,nPlease enter string S: );scanfs);printf (z,nPlease enter substring t: );scanft);p=fun(s, t);if (p) printf (,znThe result is:%
34、sn p);else printf (,znNot found!n ;【参考答案】错误:a=Null;正确:a = NULL;(2)错误:if (r=p) r+;p+;正确:if (*r=*p) r+;p+;下列给定程序中,函数fun的功能是:将字符串tt中的小写字母都改为对应的大写字母,其他字符不变。例如,若输入Ab, cD”,则输出AB, CD”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include char *fun(char tt)!int I;/*found*/for
35、(I=0;ttI ;I+)if (a =ttI) | | (ttI= z)/*found*/ttI+=32;return(tt);)main()ichar tt81;system(CLS);printf (zznPlease enter a string: ); gets (tt);printf (z,nThe result string is: n%sz,, fun(tt);【参考答案】错误:I I正确:&(2)错误:32 正确:tti-=32;下列给定程序中,函数fun的功能是:计算s所指字符串中含有t所指字符串的数 目,并作为函数值返回。请改正函数fun中的错误或在横线处填上适当的内容并
36、把横线删除,使它能得出 正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include Sinclude #include #include Sdefine N 80int fun(char *s, char *t) int n;char *p, *r;n=0;/*found*/p=&s 0;*r=t;while(*p) if (*r=*p)(r+;if(*r= 03(n+;/*found*/11 ;)1p+;)return n;)void main()char aN, bN; int m;system(CLS);printf (zznPlease e
37、nter string a:);gets(a);printf(z,nPlease enter substring b: ); gets(b);m=fun(a, b);m二printf (nThe result is :m=%dnz,, m);【参考答案】(1)错误:*r=t;正确:r=t;(2)应填:r=t;或 r=&t 0;下列给定程序中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出, 构成一个新数放在t中。高位仍在高位,低位仍在低位。例如当s中的数为 87653142时,t中的数为7531。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include Sinclude void fun(long s, long *t)int d;long sl=l;/*found*/t=0;while(s0) d=s%10;/* found*/if (d%2=0)*t=d*sl+*t;sl*=10;s/=10;)void main()long s, t;system(*CLS*);printf(nPlease enter s: ); scanfr%ld*,&s);fun(s,&t);printf(The result is
限制150内