历年二级c语言机试真题及答案.docx
- 文档编号:9351541
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:111
- 大小:44.10KB
历年二级c语言机试真题及答案.docx
《历年二级c语言机试真题及答案.docx》由会员分享,可在线阅读,更多相关《历年二级c语言机试真题及答案.docx(111页珍藏版)》请在冰豆网上搜索。
历年二级c语言机试真题及答案
历年二级c语言机试真题及答案
(1)1.程序填空题
在主函数中从键盘输入若干个数放入数组a中,用0结束输入但不计入数组。
下列给定程序中,函数fun的功能是:
输出数组元素中小于平均值的元素。
例如,数组中元素的值依次为34、54、675、456、453、121,则程序的运行结果为34、54、121。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
不得增行或删行,也不得更改程序的结构!
#include
#include
voidfun(___1___,intn)
{
doublecount=0.0;
doubleaverage=0.0;
inti=0;
for(i=0;i ___2___; average=___3___; for(i=0;i if(a[i] { 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); } 2.程序修改题 给定程序中,函数fun的功能是: 根据整型形参m,计算如下公式的值: y=1+1/(2*2)+1/(3*3)+1/(4*4)+…+1/(m*m) 例如: 若m中的值为5,则应输出1.463611。 请改正程序中的错误,使其能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include doublefun(intm) { doubley=1.0; intI; /**********found**********/ for(i=2;i /**********found**********/ y+=1/(i*i); return(y); } main() { intn=5; printf("\nTheresultis%lf\n",fun(n)); } 3.程序设计题 函数fun的功能是: 将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为“ABCDEFG123456”,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。 最后,t所指的数组中的内容应是“246”。 注意: 部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include #include voidfun(char*s,chart[]) { } main() { chars[100],t[100]; printf("\nPleaseenterstringS: "); scanf("%s",s); fun(s,t); printf("\nTheresultis: %s\n",t); } (2)1.程序填空题 给定程序中,函数fun的功能是: 找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! #include #defineN4 voidfun(int(*a)[N],int*b) { intI,j; for(i=0;i { /**********found**********/ b[i]=___1___; for(j=1;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;i { for(j=0;j printf("%4d",x[i][j]); printf("\n"); } /**********found**********/ fun(___3___); printf("\nTheresultis: "); for(i=0;i printf("\n"); } 2.程序修改题 给定程序中,函数fun的功能是: 求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。 例如,当字符串中的内容为“abcdabfabcdx”、t中的内容为“ab”时,输出结果应是abcdx。 当字符串中的内容为“abcdabfabcdx”、t中的内容为“abd”时,则程序输出未找到信息notbefound! 。 请改正程序中的错误,使其能得出正确的结果。 注意: 不要改动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==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"); } 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 #include #include floatfun() { } main() { FILE*out; floatcos=fun(); printf("Result=%f\n",cos); out=fopen("outfile.dat","w"); fprintf(out,"%f",cos); fclose(out); } (3)1.程序填空题 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。 所有学生数据均以二进制方式输出到student.dat文件中。 函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的新数据覆盖原数据,其他学生数据不变;若找不到,则什么都不做。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! #include #defineN5 typedefstructstudent {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;i<3;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;j { printf("\nNo: %ldName: %-8sScores: ", ss[j].sno,ss[j].name); for(i=0;i<3;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;j { printf("\nNo: %ldName: %-8sScores: ", ss[j].sno,ss[j].name); for(i=0;i<3;i++) printf("%6.2f",ss[j].score[i]); printf("\n"); } } 2.程序修改题 给定程序中,函数fun的功能是: 计算正整数num的各位上的数字之积。 例如,若输入252,则输出应该是20;若输入202,则输出应该是0。 请改正程序中的错误,使其能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include longfun(longnum) { /**********found**********/ longk; do { k*=num%10; /**********found**********/ num\=10; }while(num); return(k); } main() { longn; printf("\Pleaseenteranumber: "); scanf("%ld",&n); printf("\n%ld\n",fun(n)); } 3.程序设计题 程序定义了N×N的二维数组,并在主函数中自动赋值。 请编写函数fun(inta[][N],intn),函数的功能是: 使N×N的二维数组左下三角元素中的值乘以n。 例如: 若n的值为3,a数组中的值为: 197 238 456 则返回主程序后a数组中的值应为: 397 698 121518 注意: 部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include #include #defineN5 intfun(inta[][N],intn) { } main() { inta[N][N],n,I,j; printf("***Thearray***\n"); for(i=0;i { for(j=0;j { a[i][j]=rand()%10; printf("%4d",a[i][j]);} printf("\n"); } don=rand()%10;while(n>=3); printf("n=%4d\n",n); fun(a,n); printf("***THERESULT***\n"); for(i=0;i { for(j=0;j printf("%4d",a[i][j]); printf("\n"); } } (4)1.程序填空题 请补充函数fun,该函数的功能是: 统计所有小于等于x(x>2)的素数的个数,素数的个数作为函数值返回。 例如,输入x=20,结果: 2,3,5,7,11,13,17,19。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! #include intfun(intx) { intI,j,count=0; printf("\nTheprimenumberbetween2to%d\n",x); for(i=2;i<=x;i++) { for(___1___;j if(___2___%j==0) break; if(___3___>=i) { count++; printf(count%15? "%5d": "\n%5d",i); } } returncount; } main() { intx=20,result; result=fun(x); printf("\nThenumberofprimeis: %d\n",result); } 2.程序修改题 给定程序中,函数fun的功能是: 依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。 请改正程序中的错误,使其能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include voidfun(char*s) { intI,j; for(i=0,j=0;s[i]! ='\0';i++) if(s[i]>='0'&&s[i]<='9') /**********found**********/ s[j]=s[i]; /**********found**********/ s[j]="\0"; } main() { charitem[80]; printf("\nEnterastring: "); gets(item); printf("Thestringis: %s\n",item); fun(item); printf("Thestringofchangingis: %s\n",item); } 3.程序设计题 请编写函数fun,它的功能是: 计算n门课程的平均分,计算结果作为函数值返回。 例如,若有5门课程的成绩是90.5、72、80、61.5、55,则函数的值为: 71.80。 注意: 部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include floatfun(float*a,intn) { } main() { floatscore[30]={90.5,72,80,61.5,55}, aver; aver=fun(score,5); printf("Averagescoreis: %5.2f\n", aver); } (5)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。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 部分源程序已给出。 不得增行或删行,也不得更改程序的结构! #include doublefun(intn) { intI;doubles,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___; } returns; } main() { intn=-1; while(n<0) { printf("Pleaseinput(n>0): "); scanf("%d",&n); } printf("Theresultis: %f\n",fun(n)); } 2.程序修改题 在给定程序中,fun函数的功能是: 将n个无序整数从小到大排序。 请改正程序中的错误,使其能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include fun(intn,int*a) { intI,j,p,t; for(j=0;j { p=j; /**********found**********/ for(i=j+1;i if(a[p]>a[i]) /**********found**********/ t=I; if(p! =j) {t=a[j];a[j]=a[p];a[p]=t;} } } putarr(intn,int*z) { intI; for(i=1;i<=n;i++,z++) { printf("%4d",*z); if(! (i%10))printf("\n"); } printf("\n"); } main() { intaa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11; printf("Beforesorting%dnumbers: \n",n); putarr(n,aa); fun(n,aa); printf("Aftersorting%dnumbers: \n",n); putarr(n,aa); } 3.程序设计题 请编写一个函数unsignedfun(unsignedn),n是一个大于10的无符号整数,若n是m(m≥2)位的整数,则函数求出n的后m-1位的数作为函数值返回。 例如,若n的值为1234,则fun()函数值为234。 注意: 部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。 #include #include unsignedfun(unsignedm) { } main() { unsignedn; FILE*out; printf("Enteraunsignedintegerdata: "); scanf("%u",&n); printf("Theoriginaldatais: %u\n",n); if(n<10) printf("Dataerror! "); else printf("Theresult: %u\n",fun(n)); out=fopen("outfile.dat","w"); fprintf(out,"%u",fun(28)); fclose(out); } (6)1.程序填空题 给定程序中,函数fun的功能是: 将形参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。 例如,s所指字符串为: asd123fgh543df,处理后新字符串为: asdfghdf12543。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! #include #include #include char*fun(char*s) { intI,j,k,n; char*p,*t; n=strlen(s)+1; t=(char*)malloc(n*sizeof(char)); p=(char*)malloc(n*sizeof(char)); j=0;k=0; for(i=0;i { if(((s[i]>='a')&&(s[i]<='z'))||((s[i]>='
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 历年 二级 语言 机试真题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)