计算机二级C语言上机试题(最经典)(内容丰富,覆盖面广,可以运行试验)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2011年3月最新计算机二级C语言题库(根据等考通最新版本自己整理)第一套1.程序填空题在主函数中从键盘输入若干个数放入数组a中,用0结束输入但不计入数组。下列给定程序中,函数fun的功能是:输出数组元素中小于平均值的元素。例如,数组中元素的值依次为34、54、675、456、453、121,则程序的运行结果为34、54、121。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#includeconio.h#includestdio.hvoidfun(___1___,intn){doublecount=0.0;doubleaverage=0.0;inti=0;for(i=0;in;i++)___2___;average=___3___;for(i=0;in;i++)if(a[i]average){if(i%5==0)printf(\n);printf(%d,,a[i]);}}main(){inta[1000];inti=0;printf(\nPleaseenterdatas(endwith0):);do{scanf(%d,&a[i]);}while(a[i++]!=0);fun(a,i-1);}【答案】(1)inta[](2)count+=a[i]或count=count+a[i](3)count/n2.程序修改题给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值:y=1+1/(2*2)+1/(3*3)+1/(4*4)+…+1/(m*m)例如:若m中的值为5,则应输出1.463611。请改正程序中的错误,使其能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includestdio.hdoublefun(intm){doubley=1.0;intI;/**********found**********/for(i=2;im;i++)/**********found**********/y+=1/(i*i);return(y);}main(){intn=5;printf(\nTheresultis%lf\n,fun(n));}【答案】(1)将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所指字符串中的内容为“ABCDEFG123456”,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后,t所指的数组中的内容应是“246”。注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#includestdio.h#includestring.hvoidfun(char*s,chart[]){}main(){chars[100],t[100];printf(\nPleaseenterstringS:);scanf(%s,s);fun(s,t);printf(\nTheresultis:%s\n,t);}【答案】voidfun(char*s,chart[]){intk,n=0;for(k=0;kstrlen(s);k++)if(k%2==0&&s[k]%2==0)t[n++]=s[k];t[n]='\0';}第二套1.程序填空题给定程序中,函数fun的功能是:找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#includestdio.h#defineN4voidfun(int(*a)[N],int*b){intI,j;for(i=0;iN;i++){/**********found**********/b[i]=___1___;for(j=1;jN;j++)/**********found**********/if(b[i]___2___a[j][i])b[i]=a[j][i];}}main(){intx[N][N]={{12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3}},y[N],I,j;printf(\nThematrix:\n);for(i=0;iN;i++){for(j=0;jN;j++)printf(%4d,x[i][j]);printf(\n);}/**********found**********/fun(___3___);printf(\nTheresultis:);for(i=0;iN;i++)printf(%3d,y[i]);printf(\n);}【答案】(1)a[0][i](2)=或(3)x,y2.程序修改题给定程序中,函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为“abcdabfabcdx”、t中的内容为“ab”时,输出结果应是abcdx。当字符串中的内容为“abcdabfabcdx”、t中的内容为“abd”时,则程序输出未找到信息notbefound!。请改正程序中的错误,使其能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includestdio.h#includestring.hchar*fun(char*s,char*t){char*p,*r,*a;/**********found**********/a=Null;while(*s){p=s;r=t;while(*r)/**********found**********/if(r==p){r++;p++;}elsebreak;if(*r=='\0')a=s;s++;}returna;}main(){chars[100],t[100],*p;printf(\nPleaseenterstringS:);scanf(%s,s);printf(\nPleaseentersubstringt:);scanf(%s,t);p=fun(s,t);if(p)printf(\nTheresultis:%s\n,p);elseprintf(\nNotfound!\n);}【答案】(1)将a=Null;改为:a=NULL;(2)将if(r==p)改为:if(*r==*p)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()的花括号中填入所编写的若干语句。#includeconio.h#includemath.h#includestdio.hfloatfun(){}main(){FILE*out;floatcos=fun();printf(Result=%f\n,cos);out=fopen(outfile.dat,w);fprintf(out,%f,cos);fclose(out);}【答案】floaty1=0.0,y0;do{y0=y1;y1=cos(y0);}while(fabs(y0-y1)=1e-6);returny1;第三套?1.程序填空题程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的新数据覆盖原数据,其他学生数据不变;若找不到,则什么都不做。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#includestdio.h#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,longsno){FILE*fp;STUn;intI;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.score[i]+=3;/**********found**********/fseek(fp,1L*___3___,SEEK_CUR);fwrite(&n,sizeof(STU),1,fp);}fclose(fp);}main(){STUt[N]={{10001,MaChao,91,92,77},{10002,CaoKai,75,60,88},{10003,LiSi,85,70,78},{10004,FangFang,90,82,87},{10005,ZhangSan,95,80,88}},ss[N];intI,j;FILE*fp;fp=fopen(student.dat,wb);fwrite(t,sizeof(STU),N,fp);fclose(fp);printf(\nTheoriginaldata:\n);fp=fopen(student.dat,rb);fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;jN;j++){printf(\nNo:%ldName:%-8sScores:,ss[j].sno,ss[j].name);for(i=0;i3;i++)printf(%6.2f,ss[j].score[i]);printf(\n);}fun(student.dat,10003);fp=fopen(student.dat,rb);fread(ss,sizeof(STU),N,fp);fclose(fp);printf(\nThedataaftermodifying:\n);for(j=0;jN;j++){printf(\nNo:%ldName:%-8sScores:,ss[j].sno,ss[j].name);for(i=0;i3;i++)printf(%6.2f,ss[j].score[i]);printf(\n);}}【答案】(1)feof(fp)(2)==sno(3)sizeof(STU)2.程序修改题给定程序中,函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入252,则输出应该是20;若输入202,则输出应该是0。请改正程序中的错误,使其能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includestdio.hlongfun(longnum){

1 / 252
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功