1、二级C语言上机题库内部资料2011年3月最新计算机二级C语言题库(根据等考通最新版本自己整理)第一套1.程序填空题在主函数中从键盘输入若干个数放入数组a中,用0结束输入但不计入数组。下列给定程序中,函数fun的功能是:输出数组元素中小于平均值的元素。例如,数组中元素的值依次为34、54、675、456、453、121,则程序的运行结果为34、54、121。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include #include void fun(_1_,int n) double count=0.0; double a
2、verage=0.0; int i=0; for(i=0;in;i+) _2_; average=_3_; for(i=0;in;i+) if(aiaverage) if(i%5=0) printf(n); printf(%d,ai); main() int a1000; int i=0; printf(nPlease enter datas(end with 0):); do scanf(%d,&ai); while(ai+!=0); fun(a,i-1);【答案】 (1) int a (2)count+=ai或count=count+ai (3)count/n2.程序修改题给定程序中,函数
3、fun的功能是:根据整型形参m,计算如下公式的值:y=1+1/(2*2)+1/(3*3)+1/(4*4)+1/(m*m)例如:若m中的值为5,则应输出1.463611。请改正程序中的错误,使其能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include double fun(int m) double y=1.0; int I;/*found*/ for(i=2;im;i+)/*found*/ y+=1/(i*i); return(y);main() int n=5; printf(nThe result is %lfn, fun(n);【答案】(1)将
4、for(i=2;im;i+) 改为: for(i=2;i=m;i+)(2)将y+=1/(i*i); 改为:y +=1.0/(i*i);3.程序设计题函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFG 123456”,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后,t所指的数组中的内容应
5、是“246”。注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include #include void fun(char *s, char t)main() char s100,t100; printf(nPlease enter string S:); scanf(%s, s); fun(s,t); printf(nThe result is: %sn,t);【答案】void fun(char *s,char t) int k,n=0; for(k=0;kstrlen(s);k+) if(k%2=0 & sk%2=0)
6、tn+=sk; tn= 0;第二套1.程序填空题给定程序中,函数fun的功能是:找出NN矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include #define N 4void fun(int(*a)N,int *b) int I,j; for(i=0; iN; i+) /*found*/ bi=_1_; for(j=1;jN;j+)/*found*/ if(bi_2_aji) bi= aji; main() int xNN=12,5,8,7,6,1,9
7、,3,1,2,3,4,2,8,4,3,yN,I,j; printf(nThe matrix :n); for(i=0;iN;i+) for(j=0; jN; j+) printf(%4d,xij); printf(n); /*found*/ fun(_3_); printf(nThe result is:); for(i=0; iN; i+) printf(%3d,yi); printf(n);【答案】(1)a0i (2) =或 (3)x, y2.程序修改题给定程序中,函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;
8、若未找到,则函数值为NULL。例如,当字符串中的内容为“abcdabfabcdx”、t中的内容为“ab”时,输出结果应是abcdx。当字符串中的内容为“abcdabfabcdx”、t中的内容为“abd”时,则程序输出未找到信息not be found!。请改正程序中的错误,使其能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include #include char *fun(char *s,char *t) char *p,*r,*a;/*found*/ a=Null; while(*s) p=s;r=t; while(*r)/*found*/ if(r
9、=p) r+;p+; else break; if(*r=0) a=s; s+; return a ;main() char s100,t100,*p; printf(nPlease enter string S :); scanf(%s,s); printf(nPlease enter substring t :); scanf(%s,t); p=fun(s,t); if(p) printf(nThe result is :%sn,p); else printf(nNot found !n);【答案】(1)将a=Null; 改为:a=NULL; (2)将if(r=p) 改为:if(*r=*p
10、)3.程序设计题编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(y)-y=0的一个实根。Yn+1=cos(yn)迭代步骤如下:(1)取y1初值为0.0。(2)y0=y1,把y1的值赋给y0。(3)y1=cos(y0),求出一个新的y1。(4)若y0-y1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2)。(5)所求y1就是方程cos(x)-y=0的一个实根,作为函数值返回。程序将输出结果Result=0.739085。注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。#include #i
11、nclude #include float fun()main() FILE *out; float cos=fun(); printf(Result=%fn,cos); out=fopen(outfile.dat,w); fprintf(out,%f,cos); fclose(out);【答案】float y1=0.0,y0;do y0=y1; y1=cos(y0);while(fabs(y0-y1)=1e-6);return y1;第三套1.程序填空题程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的
12、功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的新数据覆盖原数据,其他学生数据不变;若找不到,则什么都不做。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include #define N 5typedef struct student long sno; char name10; float score3;STU;void fun(char *filename, long sno) FILE *fp; STU n; int I;
13、 fp=fopen(filename,rb+);/*found*/ while(!_1_) fread(&n,sizeof(STU),1,fp);/*found*/ if(n.sno_2_) break; if(!feof(fp) for(i=0;i3;i+) n.scorei+=3;/*found*/ fseek(fp,1L*_3_,SEEK_CUR); fwrite(&n, sizeof(STU), 1, fp); fclose(fp);main() STU tN=10001,MaChao,91,92,77,10002,CaoKai,75,60,88,10003,LiSi,85,70,78
14、,10004,FangFang,90,82,87,10005,ZhangSan,95,80,88,ssN; int I,j; FILE *fp; fp=fopen(student.dat,wb); fwrite(t, sizeof(STU), N, fp); fclose(fp); printf(nThe original data :n); fp=fopen(student.dat,rb); fread(ss, sizeof(STU), N, fp); fclose(fp); for(j=0; jN; j+) printf(nNo:%ld Name:%-8sScores: , ssj.sno
15、,ssj.name); for(i=0;i3;i+) printf(%6.2f ,ssj.scorei); printf(n); fun(student.dat,10003); fp=fopen(student.dat,rb); fread(ss,sizeof(STU),N,fp); fclose(fp); printf(nThe data aftermodifying :n); for(j=0;jN;j+) printf(nNo:%ld Name: %-8s Scores:, ssj.sno,ssj.name); for(i=0;i3;i+) printf(%6.2f,ssj.scorei)
16、; printf(n); 【答案】(1)feof(fp) (2)=sno (3)sizeof(STU) 2.程序修改题给定程序中,函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入252,则输出应该是20;若输入202,则输出应该是0。请改正程序中的错误,使其能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include long fun(long num)【答案】(1)将long k;改为:long k=1;或long k;k=1;(2)将num=10;改为:num/=10; 3.程序设计题程序定义了NN的二维数组,并在主函数中自动赋值
17、。请编写函数fun(int aN, int n),函数的功能是:使NN的二维数组左下三角元素中的值乘以n。例如:若n的值为3,a数组中的值为: 1 9 7 2 3 8 4 5 6则返回主程序后a数组中的值应为: 3 9 7 6 9 8 12 15 18注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include #include #define N 5int fun(int aN,int n)main() int aNN,n,I,j; printf(*The array*n); for(i=0;iN;i+) for(j=0
18、;j=3); printf(n=%4dn,n); fun(a,n); printf (*THE RESULT*n); for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d,aij); printf(n); 【答案】int fun(int aN,int n) int j,k; for(j=0;jN;j+) for(k=0;k2)的素数的个数,素数的个数作为函数值返回。例如,输入x=20,结果:2,3,5,7,11,13,17,19。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include int
19、 fun(int x) int I,j,count=0; printf(nThe prime number between 2 to %dn,x); for(i=2;i=x;i+) for(_1_;j=i) count+; printf(count%15 ? %5d : n%5d,i); return count;main() int x=20,result; result=fun(x); printf(nThe number of prime is : %dn,result);【答案】(1)j=2 (2)i (3)j2.程序修改题给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,
20、形成新的字符串,并取代原字符串。请改正程序中的错误,使其能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include void fun(char *s) int I,j; for(i=0,j=0;si!=0;i+) if(si=0&si=9)/*found*/ sj=si;/*found*/ sj=0;main() char item80; printf(nEnter a string:); gets(item); printf(The string is:%sn,item); fun(item); printf(The string of changi
21、ng is:%sn,item);【答案】(1)将sj=si; 改为:sj+=si; (2)将sj=0; 改为:sj= 0;3.程序设计题请编写函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如,若有5门课程的成绩是90.5、72、80、61.5、55,则函数的值为:71.80。注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include float fun(float *a,int n)main() float score30=90.5,72,80,61.5,55, aver; aver=fun(s
22、core,5); printf(Average score is:%5.2fn, aver);【答案】float fun(float *a,int n) float s=0.0; int I; for(i=0; in; i+) s+=ai; return s/n; 第五套1.程序填空题给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回:S=1*3/2*2+3*5/4*4+5*7/6*6+(2n-1)*(2n+2)/ (2n)*(2n)例如:当行参n的值为10时,函数返回9.612558。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序已给出。
23、不得增行或删行,也不得更改程序的结构!#include double fun(int n) int I; double s,t;/*found*/ s=_1_;/*found*/ for(i=1;i=_2_;i+) t=2.0*I;/*found*/ s=s+(2.0*i-1)*(2.0*i+1)/_3_; return s;main() int n=-1; while(n0): ); scanf(%d,&n); printf(The result is: %fn,fun(n);【答案】(1)0 (2)n (3)(t*t)2.程序修改题 在给定程序中,fun函数的功能是:将n个无序整数从小到大
24、排序。请改正程序中的错误,使其能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include #include fun(int n,int*a) int I,j,p,t; for(j=0;jn-1;j+) p=j;/*found*/ for(i=j+1;iai)/*found*/ t=I; if(p!=j) t=aj;aj=ap;ap=t; putarr(int n,int *z) int I; for(i=1;i=n;i+,z+) printf(%4d,*z); if(!(i%10) printf(n); printf(n);main() int aa2
25、0=9,3,0,4,1,2,5,6,8,10,7, n=11; printf(Before sorting%d numbers:n,n); putarr(n,aa); fun(n, aa); printf(After sorting%d numbers:n,n); putarr(n,aa);【答案】(1)将for(i=j+1;in-1;i+) 改为:for(i=j+1;in;i+)或for(i=j+1;i=n-1;i+)(2)将t=i;改为:p=i;3.程序设计题请编写一个函数unsigned fun(unsigned n),n是一个大于10的无符号整数,若n是m(m2)位的整数,则函数求出n的后m-1位的数作为函数值返回。例如,若n的值为1234,则fun()函数值为234。注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。#include conio.h
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1