全国计算机等级考试二级c语言上机精选题库共55套.docx
- 文档编号:29312220
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:262
- 大小:111.16KB
全国计算机等级考试二级c语言上机精选题库共55套.docx
《全国计算机等级考试二级c语言上机精选题库共55套.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级c语言上机精选题库共55套.docx(262页珍藏版)》请在冰豆网上搜索。
全国计算机等级考试二级c语言上机精选题库共55套
2020年全国计算机等级考试二级c语言上机精选题库(共55套)
第1套题
一、填空题
请补充main函数,该函数的功能是:
计算每个学生科目的平均分,并把结果保存在数组bb中。
例如,当score[N][M]={{78.5,84,83,65,63},{88,91.5,89,93,95},{72.5,65,56,75,77}}时,三个学生的平均分为:
74.791.369.1。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
#include
#defineN3
#defineM5
main()
{
inti,j;
staticfloatscore[N][M]=
{
{78.5,84,83,65,63},
{88,91.5,89,93,95},
{72.5,65,56,75,77}
};
floatbb[N];
for(i=0;i ___1___; for(i=0;i { for(j=0;j ___2___; bb[i]/=M; } for(i=0;i printf("\nstudent%d\taverage=%5.1f",i+1,bb[i]); } 二、改错题 下列给定程序中,函数fun的功能是: 根据整型行参m,计算如下公式的值。 y= 例如,若m=2000,则应该输出: 0.000160。 请改正程序中的错误,使它能得出正确的结果。 #include #include /********found********/ fun(intm) { doubley=0,d; inti; /********found********/ for(i=100,i<=m,i+=100) { d=(double)i*(double)i; y+=1.0/d; } return(y); } main() { intn=2000; printf("\nTheresultis%lf\n",fun(n)); } 三、编程题 请编写函数fun,该函数的功能是: 统计个年龄段的人数。 N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。 结果在主函数中输出。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include #defineN50 #defineM11 voidfun(int*a,int*b) { } doublernd() { statict=29,c=217,m=1024,r=0; r=(r*t+c)%m; return((double)r/m); } main() { intage[N],i,d[M]; FILE*out; for(i=0;i age[i]=(int)(115*rnd()); printf("Theoriginaldata: \n"); for(i=0;i printf((i+1)%10==0? "%4d\n": "%4d",age[i]); printf("\n\n"); fun(age,d); out=fopen("out.dat","w"); for(i=0;i<10;i++) { printf("%4d---%4d: %4d\n",i*10,i*10+9,d[i]); fprintf(out,"%4d---%4d: %4d\n",i*10,i*10+9,d[i]); } printf("Over100: %4d\n",d[10]); fprintf(out,"Over100: %4d\n",d[10]); fclose(out); } 答案: 一、1、bb[i]=0或*(bb+i)=0 2、bb[i]+=score[i][j]或bb[i]=b[i]+score[i][j]或bb[i]=score[i][j]+bb[i] 二、1、fun(intm)应改为doublefun(intm) 2、for(i=100,i<=m,i+=100)应改为for(i=100;i<=m;i+=100) 三、 voidfun(int*a,int*b) { inti,j; for(j=0;j b[j]=0; for(i=0;i if(a[i]>=0&&a[i]<=9) b[0]+=1; elseif(a[i]>=10&&a[i]<=19) b[1]+=1; elseif(a[i>=20&&a[i]<=29) b[2]+=1; elseif(a[i]>=30&&a[i]<=39) b[3]+=1; elseif(a[i>=40&&a[i]<=49]) b[4]+=1; elseif(a[i]>=50&&a[i]<=59) b[5]+=1; elseif(a[i]>=60&&a[i]<=69) b[6]+=1; elseif(a[i]>=70&&a[i]<=79) b[7]+=1; elseif(a[i]>=80&&a[i]<=89) b[8]+=1; elseif(a[i]>=90&&a[i]<=99) b[9]+=1; else b[10]+=1; } 第2套 : 填空题 请补充main函数,该函数的功能是: 从键盘输入一组字符串,以’*’结束输入,并显示出这个字符串。 例如,输入abcdef*,结果显示abcdef。 仅在横线上添入所编写的若干表达式或语句,勿改动函数中的其他任何内容。 #include #defineN80 main() { inti=-1,j=0; charstr[N]; printf("\nInputastring\n"); do { i++; scanf(_1_); }while(_2_); printf("\n*******displaythestring*******\n"); while(j { printf(_3_); j++; } } 答案: (1)“%c”,&str[i] (2)str[i]! =’*’ (3)”%c”,str[j] 改错题: 下列给定程序中,函数fun的功能是: 计算并输出high以内最大的10个素数之和。 High由主函数传给fun函数。 若high的值为100,则函数的值为732。 #include #include #include intfun(inthigh) { intsum=0,n=0,j,yes; while((high>=2)&&(n<10)) { yes=1; for(j=2;j<=high/2;j++) /********found********/ if(high%j==0) { yes=0; break } if(yes) { sum+=high; n++; } high--; } returnsum; } main() { printf("%d\n",fun(100)); } 答案: break改为break; 程序设计: 请编写函数fun,该函数的功能是: 统计一行字符串中单词的个数,作为函数值返回。 一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始和结束都没有空格。 #include #include #defineN80 intfun(char*s) { } main() { charline[N]; intnum=0; FILE*out; char*test[]={"HelloWorld! ","Thisisateststring.","ab","cdefg,sfl"}; printf("Enterastring: \n"); gets(line); num=fun(line); printf("Thenumberofwordis: %d\n\n",num); out=fopen("out.dat","w"); for(num=0;num<4;num++) printf(out,"%d\n",fun(test[num])); fclose(out); } 第3套 第一题: 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体中,给定程序的功能是找出成绩最低的学生记录,通过形参返回函数。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 #include #include #defineN10 typedefstructss { charnum[10]; ints; }STU; fun(STUa[],STU*s) { stuh; inti; h=a[0]; for(i=1;i if(a[i].s h=a[i]; *s=h; } main() { STUa[N]= { {"A01",81},{"A02",89},{"A03",66},{"A04",87}, {"A05",77},{"A06",90},{"A07",79},{"A08",61}, {"A09",80},{"A10",71} },m; inti; printf("*****Theoriginaldata*****\n"); for(i=0;i printf("No=%sMark=%d\n",a[i].num,a[i].s); fun(a,&m); printf("*****THERESULT*****\n"); printf("Thelowest: %s,%d\n",m.num,m.s); } 第二题: 下列给定程序中,函数fun的功能是: 将字符串p中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。 例如,在调用fun函数之前给字符串a输入ABCDEFGHIJK,调用函数之后,字符串之后,字符串b中的内容则为ABCDEFGHIJK。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include voidfun(char*p,char*b) { inti,k=0; while(*p) { /********found********/ i=0; /********found********/ while(i<3&&*p) { b[k]=*p; k++; p++; i++; } /********found********/ if(*p) b[k++]=''; } b[k]='\0'; } main() { chara[80],b[80]; printf("Enterastring: "); gets(a); printf("Theoriginalstring: "); puts(a); fun(a,b); printf("\nThestringafterinsertspace: "); puts(b); printf("\n\n"); } 第三题: 请编写一个函数fun,它的功能是: 计算并输出给定整数n的所有因子(不包括1与自身)之和。 规定n的值不大于1000。 例如,若主函数从键盘给n输入的值为856,则输出为sum=763。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include intfun(intn) { } main() { intn,sum; FILE*out; printf("Inputn: "); scanf("%d",&n); sum=fun(n); printf("sum=%d\n",sum); out=fopen("out.dat","w"); fprintf(out,"%d\n",fun(123)); fprintf(out,"%d\n",fun(456)); fprintf(out,"%d\n",fun(789)); fprintf(out,"%d\n",fun(147)); fprintf(out,"%d",fun(258)); fclose(out); } intfun(intn) { ints=0,i; for(i=2;i<=n-1;i++) if(n%i==0) s+=i; returns; } 第4套 填空题 请补充main函数,该函数的功能是: 把字符串str1中的非空格字符拷贝到字符串str2中. 例如,若str1=”nicetomeetyou! ”,则str2=”nicetomeetyou! ” 仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容. #include #defineN80 main() { staticcharstr1[N]="nicetomeetyou! "; charstr2[N]; inti=0,j=0; printf("\n******str1******\n"); puts(str1); while(str1[i]) { if(___1___) str2[j++]=str1[i]; ___2___; } printf("\n******str2******\n"); for(i=0;i printf("%c",str2[i]); } 改错题 下列给定程序中,函数fun的功能是: 将大写字母转换为对应小写字母之后的第五个字母;若小写字母为v~z,使小写字母的值减21.转换后的小写字母作为函数值返回.例如,若形参是字母A,则转换字母为小写字母f;若形参是字母W,则转换为小写字母b. 请改正函数fun中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include charfun(charc) { /********found********/ if(c>='A'&&c<='Z') c=c-32; /********found********/ if(c>='a'&&c<='u') c=c-5; elseif(c>='v'&&c<='z') c=c-21; returnc; } main() { charc1,c2; printf("\nEnteraletter(A-Z): "); c1=getchar(); if(isupper(c1)) { c2=fun(c1); printf("\n\nTheletter%cchangeto%c\n",c1,c2); } else { printf("\nEnter(A-Z)! \n"); } } 编程题 请编写函数fun,其功能是: 将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值为奇数、……、 字符1的ASCII码值也为奇数、……都应当删除,其他依次类推。 最后t所指的叔祖中的内容应是BDF24。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include #include #include voidfun(char*s,chart[]) { } main() { chars[100],t[100],Msg[]="PleaseenterstringS: "; FILE*out; printf(Msg); scanf("%s",s); fun(s,t); printf("\nTheresultis: %s\n",t); out=fopen("out.dat","w"); fun(Msg,t); fprintf(out,"%s",t); fclose(out); } 答案: 第一题: 第1处填空str1[i]! =’’或’’! =str1[i] 第2处填空i++或++i或i+=1或i=i+1 第二题: 第1处: c=c-32;应改为c=c+32; 第2处: c=c-5;应改为c=c+5; 第三题: voidfun(char*s,chart[]) { intI,j=0,n; n=strlen(s); for(i=0;i if(s[i]%2==0) { t[j]=s[i]; j++; } t[j]=’\0’ } 第5套 填空题 请补充main函数,该函数的功能是: 输出一个N*N矩阵,要求非周边元素赋值0,周边元素赋值1。 仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他内容。 #include #defineN10 main() { intbb[N][N]; inti,j,n; printf("\nInputn: \n"); scanf("%d",&n); for(i=0;i for(j=0;j { if(i==0||i==n-1||j==0||j==n-1) ___1___; else ___2___; } printf("\n*****theresult*******\n"); for(i=0;i { printf("\n\n"); for(j=0;j printf("%4d",bb[i][j]); } } 改错题 下列给定程序中函数fun的功能是: 从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中,例如,当s中的数为7654321时,t中的数为7531。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include /********found********/ voidfun(longs,longt) { longs1=10; *t=s%10; while(s>0) { s=s/100; *t=s%10*s1+*t; /********found********/ s1=s1*100; } } main() { longs,t; printf("\nPleaseenters: "); scanf("%ld",&s); fun(s,&t); printf("Theresultis: %ld\n",t); } 编程题 请编写函数fun,其功能是: 将两个两位数的正整数a、b合并形成一个整数放在c中。 合并的方式是: 将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。 例如,当a=45,b=12,调用该函数后,c=2415。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include #include voidfun(inta,intb,long*c) { } main() { inta,b; longc; FILE*out; printf("Inputa,b;"); scanf("%d%d",&a,&b); fun(a,b,&c); printf("Theresultis: %ld\n",c); out=fopen("out.dat","w"); for(a=20;a<50;a+=3) { fun(a,109-a,&c); fprintf(out,"%ld\n",c); } fclose(out); } 答案 第一题(填空题) 第1处填空: bb[i][j]=1 第2处填空: bb[i][j]=0 第二题(改错题) 第1处: voidfun(longs,longt)应改为voidfun(longs,long*t) 第2处: s1=s1*100;应改为s1=s1*10; 第三题(编程题) voidfun(int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试 二级 语言 上机 精选 题库 55