《全国计算机等级考试C语言上机考试题库80题答案.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试C语言上机考试题库80题答案.docx(196页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1套一、填空题给定程序的功能是求1/4的圆周长。函数通过形参得到圆的直径,函数返回1/4的圆周长(圆 周长公式为:L=rid,在程序中定义的变量名要与公式的变量相同)。例如:输入圆的直径值:19.527,输出为:15.336457请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。#includedouble fun(double d)(return 3.14159*d/4.0;main()(double z;printf( Input the d of the round:);scanf(%lf,&z);printf(L=%lfn,fun(z);二、改错题下
2、列给定程序中函数fun的功能是:计算正整数m的各位上的数字之积。例如,若输入202,则输出应该是0。请修改程序中的错误,得出正确的结果注意:不要改动main函数,不能增行或删行,也不能更改程序的结构#include#includelong fun(long n)(long r=l;do(r*=n%10;n/=10; while(n);return(r);)main()(long m;printf(nnplease enter a number:H);scanf(M%ld,&m);printf(,n%ldn,fun(m);三、编程题请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或
3、11整初的所有整数放在 数组b中,通过n返回这些数的个数。例如,若传送给m的值为20,则程序输出7 11 14o请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若 干语句。#include#include#define N 100void fun(int m,int*b,int*n)(int i,j=O;*n=O;fbr(i=l;i=m;i+)if(i%7=0lli%11=0)(j+;*n=j;)main()(int aN,n,i;FILE*out;fun(20,a,&n);for(i=0;in;i+)if(i+l)%20=0)printf(,%4dn,ai)
4、;elseprintf(,%4dn,ai);printfCAn);out=fopen(,outfile.dat,w,);fun(100A&n);fbr(i=O;i sum7返回主函数。例如:当 test=89431676 时,结果应该为:sum5=0 sum6=2 sum7=lo请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表 达式或语句。#includeint sum5,sum6,sum7;void fun(long test)sum5=sum6=sum7=0;while(test)(switch(test% 10)(case 5:sum5+;break;
5、case 6:sum6+;break;case 7:sum7+;test/=10;)main()(long test=89431676L;fun(test);printfCAnThe count result:nM);printf(test=%ld sum5=%d sum6=%d sum7=%dnn,test,sum5,sum6,sum7);)二、改错题下列给定程序中,函数fun的功能是:将字符串str中的小写字母都改为对应的大写字母, 其它字符不变.例如,若输入“asAS”,则输出“ASAS”。请修改程序中的错误,使它能统计出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改
6、程序的结构#incl ude#include#includechar*fun(char str)(int i;for(i=0;str|i;i+)if(stri=,a&stri=z,)stri-=32;retum(str);main()char str81;printf(,nplease enter a string:n);gets(str);printf(MnThe result string is:n%sM,fun(str);三、编程题请编写一个函数fun,它的功能是:找出一维整型数组元素中最小的值和它所在的下标,最 小的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中
7、a是数组名,n是a中的数据个数,min存放最小值,flag存放最小值所在元素的 下标请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若 干语句。#include#include#incl udevoid fun(int b,int n,int*min,int*d)(int i;*min=b0;*d=0;for(i=0;in;i+4-)if(bi*min)(*min=bi|;*d=i;)main()(int i,a20,min,flag,n=10;FILE*out;fbr(i=0;in;i4-+)(ai=rand()%50;printf(%4d,;ai);pri
8、ntf(,nn);fun(a,n,&min,&flag);printf(,min=%5dJndex=%4dnM,min,flag);out=fopen(outflie.dat,wn);memcpy(a;3.1415926535897932384626433832790,32);fun(a,8,&min,&flag);fprintf(out,Hmin=%5dJndex=%4dn,min,flag);fclose(out);)第3套 上机考试试题一、填空题请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整 数。当输入的整数为-1时结束。例如:输入96 121 23
9、343 232 54 89 365 89-1时,最大的数 为 365 o仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容#include#include#define NUM 100main()(int nNUMJ;int i=l;intMAX=-l;printfCAnlnsert integer with the 1 as end:nM);do(i+;printf(Mn%d=M,i);scanf(n%d;&ni);MAX=MAXni?ni:MAX;while(ni!=-l);printf(The MAX=%dnM,MAX);二、改错题下列给定程序中,函数fun的功能是:将一
10、个由八进制数字字符组成的字符串转换为与其数 值相等的十进制整数。例如,若输入11111,则输出将是4681。请修改程序中的错误,使它能得出正确结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构#include#incl ude#includeint fun(char*s)(int n;n=*s-*0*;s+;while(*s!=0)n=n*8+*s-0*;s+;return n;)main()(char str6;int i;int n;printf(Enter a string(octal digits):n);gets(str);if(strlen(str)5)(pri
11、ntf( MError:string too longer!nnM);exit(O);)for(i=0;stri;i+)if(stri7,)(printf(Error:%c not is octal digits!nnM,str|i);exit(O);)prinlf(*The original string:n);puts(str);n=fun(str);printf(An%s is convered to intege number: %dnnH,str,n);三、编程题下列程序定义了 NXN的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是: 求出数组周边元素的平均值并作为函数值
12、返回给主函数中的r例如:若c数组中的值为:197C=452383则返回主程序后r的值应为4.625000请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若 干语句#include#incl ude#include#define N 3double fun(int bN)int i,j,k=O;double r=0.0;for(j=0;jvN;j+)(r+=bOj;k+;for(j=0;jN;j+)(r+=bN-l|j;k+;for(i= 1 ;i=N -2;i+) (r+=b|i0|;k+;for(i= 1 ;i=N-2;i+)(r+=biN4;return
13、r/=k;main()(int cNN= 1,9,7,4,5,2,3,8,31;int i,j;FILE*out;double r;print* * * *n,for(i=0;iN;i4-+)for(j=0;jN;j+)printf(%4d,cij);printfO)r=fun(c);printf(THE RESULTnH);printf(The r is %lfnH,r);out=fopen(outfile.dat/w,);fclose(out);第4套 上机考试试题 一、填空题请补充fun函数,该函数的功能是将字符串str中的小写字母都改为时应的大写字母,其它 字符不变。例如:若输入Wel
14、come!”,程序输出结果是“WELCOME!”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表 达式或语句。#include#include#include char*fun(char str) (intj;for(j=O;strj;j+) (if(strU=a)&(strU=z) strj-=32; return(str);) main() (char str100;printf(nplease enter a string:);gets(str);printf(nThe result string is:n%s,fun(str);)二、改错题下列给定
15、程序中,函数fun的功能是:计算并输出n以内最大的10个能被11或19整除的 自然数之和。n的值由主函数传入,若n的值为300,则函数值为2646。请修改程序中的错误或在横线处填上适当的内容并把横线删除,使程序能得出正确的结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include int fun(int n) int m=0,mix=0;while( n=2)&( mix10)(if(n%ll=0)ll(n%19)=0)(m=m+n;mix+;)n-;)return m;main()(printf(%dn,fun(300);三、编程题请编写函数f
16、ijn,其功能是:将str所指字符串中除了下标为偶数、同时ASCII值也为偶数 的字符外,其余的全部删除;串中剩余字符所形成的一个新串放在s所指的数组中。例如,若str所指字符串中的内容为ABCDEFG123456,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCH值为偶数,但在数 组中的下标为奇数,因此也应当删除:而字符2的ASCII码值为偶数,所在数组中的下标 也为偶数,因此不应当删除,其它以此类推。最后s所指的数组中的内容应是246。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若 干语句。注意:部分源程序给出如下。#include#
17、include#includevoid fun(char*str,char s)(int i,j=O,n;n=strlen(str);for(i=0;in;i-H-)if(i%2=0&stri%2=0)(sj=stri;j+;)s|j=W;)main()(charstr100,s100;FILE*out;printf(unplease enter string:n);scanf(n%sn,str);fun(str,s);printf(MnThe result is:%snn,s);out=fopen(,outfile.dat,wn);strcpy(str,Mplease enter strin
18、g:1);fun(str,s);fprintf(oul,s”,s);fclose(out);)第5套上机考试试题一、填空题请补充fun函数,该函数的功能是:依次取出字符串中所有大写字母,形成新的字符串,并 取代原字符串。例如,输入sdfASDsd,则输出ASD。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表 达式或语句。注意:部分源程序给出如下。#include#incl udevoid fun(char*s)(intj=O;char*p=s;while(*p)(if(*p=,A,&*p=,Z)|s|j=*p;j+;P+;)sOAO;)main()(cha
19、r str100;printf(MnPlease Input a string:H);gets(str);printf(unnThe original string is:%sn,str);fun(str);printf(MnnThe string of changing is:%snH,str);)二、改错题下列给定程序中,函数fun的功能是:先从健盘上输入一个3行3列矩阵的各个元素的值, 然后输出主对角线元素之和。请修改函数fun中的错误或在横线处填上适当的内容并把横线删除,得出正确结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includevoid fun(
20、)(int aa33,sum;int i,j;sum=0;for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&aaij);for(i=0;i3;i+)sum=sum+aaii;printf(sum=%dn,sum);main()(fun();)三、编程题请编写一个函数void fun(int*s,int t,int*resull),用来求出数组的最小元素在数组中的下标,并 存放在result所指的存储单元中。例如,输入如下整数:564, 165, 567, 121, 948, 324, 329, 454, 5345, 783, 434, 124, 561, 985, 5
21、55则输出结果为:3, 121.请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若 干语句。注意:部分源程序给出如下。#include#includevoid fiin(int*s,int t,int*result)int temp,min;min=s0;for(temp=0;tempt;temp+)if(s|tempmin)min=stemp;*result=temp;)main()int store15= 564,165,567,121,948,324,329,454,5345,783,434124,561,985,555,result;FILE*out;
22、fun(store,l 0,&result);printf(u%d,%dn,result,st ore result);out=fopen( outfile.dat , “w );fprintf(out,%dn%dH,result,storeresult);fclose(out);)第6套 上机考试试题一、填空题给定程序的功能是判断字符串S中的某个字符是否与字符ch相同,若相同什么也不做,若 不同则插在字符串的最后。例如,输入test,如果输入e,输出的结果不变,但如果输入a, 结果testa。请勿改动主函数main与其它函数中的任何内容,仅在横线上填写所需的若干表达式或语句。 注意:部分源程
23、序给出如下。#include#includevoid fun(char*s,char ch)(while( *s&*s!=ch)s+;if(*s!=ch)(s0=ch;sl=0;)main()(char str81,c;printf(nnPlease input a string:nM);gets(str);printf(un Please enter the character to search:);c=getchar();fun(stnc);printf(nThe result is %sn,str);)二、改错题下列给定程序中,函数fun的功能是:按顺序给t所指数组中的元素赋予从2开始
24、的偶数。 然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在r所指的数组中。若t所 指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,t所指数组有14个元素,则 只对前10个元素进行处理,不对最后的4个元素求平均值。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#define NUM 20int fun(double*t,double*r)(intj,i;double sum;for(j=2,i=0;iNUM;i+)(ti=j;j+=2;)sum=0.0;for(j=0,i=0;iNUM;i-H-)(sum+
25、=ti;if(i+l)%5=0)r|j=sum/5;sum=0;j+;)return j;)main()(double aNUM,bNUM/5;inti,j;j=fun(a,b);printfCThe original dataAn);for(i=0;iNUM;i+)(if(i%5=0)printfCAn1);printf(4.0F,aiD;)printf(nnnThe result:nH);forG=0;ij;i+)printf(n%6.2f;bi);printf(nnnM);1三、编程题请编写一个函数void fun(int x,int sum,int select),该函数的功能是:将大
26、于整数x且紧靠x 的sum个素数存入select所指的数组中。例如,输入:121 8,则应输出:127 131 137 139 149 151 157 163.请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoid fun(int x,int sum,int select)(int r=O,temp,p,sign= 1;for(temp=x+1 ;tempx*x;temp+)(for(p=2;p=temp)(if(sum=0)selectr+=temp;sum;elsebreak;main(
27、)int x,y,a500;FILE*out;printf(nlnput two number:n);scanf( H%d,%dM,& x,& y);fun(x,y,a);fbr(x=0;xy;x4-+)printf(0%d M,ax);printf(nnH);fun(l 21,10,a);out=fopen(,outfile.dat,wn);for(x=0;x10;x+)fprintf(out,dn,a|x);fclose(out);1第7套上机考试试题一、填空题给定程序的功能是计算score中n个人的平均成绩aver,将高于aver的成绩放在high中, 通过函数名返回人数。例如,scor
28、e=88,75,50,60,80,90,n=6时,函数返回的人数应该是4, high= 88,75,80,90 o请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。#include#includeint fun(int score|,int m,int high)(int i,j=0;float aver=0.0;for(i=0;im;i+)aver+=score|i;aver/=(float)m;fbr(i=0;iaver)highj+4-=;return j;)main()(int i,n,high6;int score6= 8
29、8,75,50,60,80,90;n=fun(score,6,);printf(MnThe high of average score are:);fbr(i=0;in;i-H-)printf(u%d ”,); printf(,nn);二、改错题已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项之和。 下列给定程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的 值通过形参传入。例如,当n=4时,程序输出结果应为2.000000。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#in
30、clude#include#includedouble fun(int n)(double sum,a0,al,a2,a;inti;sum=1.0;if(n=2)sum=0.0;a0=0.0;a 1=0.0;a2=1.0;fbr(i=4;i=n;i4-+)(a=a0+al+a2;sum+=sqrt(a);a0=al;al=a2;a2=a;return sum;)main()(int n;printf(Input N=);scanf(M%du,&n);三、编程题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组score中,请 编写函数fun,它的功能是把分数最低的学生数据放在
31、low所指的数组中,注意:分数最低 的学生可能不只一个,函数返回分数最低的学生的人数。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若 干语句。注意:部分源程序给出如下。#include#define M 10 typedef struct char num10;int s; SCORE;int fun(SCORE*a,SCORE*b) (int i,j=0,n=0,min;min=a0.s;for(i=0;iM;i+)if(ai.smin) min=ai.s;for(i=0;iM;i+)if(ai.s=min) *(b+j)=ai;j+; n+;) ret
32、urn n;) main() (SCOREstuM=GA03V76,“GA04”,85,“GA01”,91,“GA08”,64,“GA06”,87,“GA014”,91,” GAO 11 ”,77, ”G AO 17M,64),nGA018 ”,64, “G AO 16”,72;SCORE lowM;int i,n;FILE*out;n=fun(stu,low);printf(The %d lowest score:n,n);for(i=0;in;i4-4-)printf(H%s %4dn,low|i.num,lowi.s);printf(n,);out=fopen(outfile.dat,w
33、n);fprintf(out,%dn,n); fbr(i=O;in;i+)fprintf(out,%4dnn,lowi.s);fclose(out);)第8套 上机考试试题一、填空题请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最小的数并输出。例如:输入78, 53, 123,则输出为53。请勿改动主函数main与其它函数中的任何内容,仅在横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。#include#includemain()(int x,y,z,min;printffAnlnput three number:nM);scanf(,%d,%d,%dH,&x,
34、&y,&z);printf(The three numbers are:%d,%d,%dn”,x,y,z);if(xz)min=z;printf(min=%dnn,min);二、改错题下列给定程序中,fun函数的功能是:分别统计字符串中小写字母和大写字母的个数。例如, 给字符串 t 输入:adfsFFssefSCGSDew,则应输出结果:big=7,small=101.请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoid fun(char*t,int*c,int*d)(while(*t)(if(*
35、t=A,&*ta&*tv=z)(d)+;t+;main()char t200;int big=O,small=O;printf(,nplease input a string:n);gets(t);fun(t,&big,&small);printf(n big=%d small=%dnM,big,small);)三、编程题请编一个函数void fun(intaMN,int bN),c指向一个M行N列的二维数组,求出二维数 组每列中最大元素,并依次放入b所指一维数组中。二维数组中的数己在主函数中赋予。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若 干语句。注
36、意:部分源程序给出如下。#include#include#define M 3#define N 4void fun(int a|MN,int bN)(int i,j,max;for(j=0;jvN;j+)(max=a|0|j;for(i=0;imax)max=aij;b|j |=max;)main()(int cMN= 10,22,15,30,19,33,45,38,20,22,66,40;int pN,ij,k;FILE*out;printf(The original datais:nu);for(i=0;iM;i+)(for(j=0;jN;j+)printf(M%6dH,cij);pri
37、ntf(AnM);)fun(c,p);printf(,nThe result is:nn);for(k=0;kN;k+)printf(%4d,pk);printf(unH);out=fopen( oulfile.dat , “w );for(k=0;kN;k+)fprintf(out,H%dnu,pk);fclose(out);第9套 上机考试试题一、填空题请补充fun函数,该函数的功能是:从健盘输入一个下标n,把数组a中比元素批足小的元素 放在它的左边,比它大的元素放在它的右边,排列成的新数组仍然保存在原数组中。例如, 数组a=33,55,66,44,77,22,88,99,ll,10,输入
38、 2,则结果输出 “33 55 44 22 11 10 66 77 88 99”。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表 达式或语句。注意:部分源程序给出如下。#include#define N 10void ftin(int a,int n)(int i,j=O,k=O,t;int bN;t=an;for(i=0;it)b|j+=ai;if(ait)ak+=ai;)for(i=0;i+,k+) ak=bi;)main()(int i,n;int aN= 33,55,66,44,77,22,88,99,11,10);printf(The origi
39、nal array:nM);for(i=0;iN;i+)printf(H%4dai);printf(Mn suffix n:);scanf(n%d,&n);fun(a,n);printfCThe new array:nn);for(i=0;iN;i+)printf(H%4d;ai);printf(n);二、改错题下列给定程序中,fun函数的功能是:求a=xxxx-xx-xx-x(此处xxxx表示n个x,x和n 的值在1至9之间)。例如x=3, a=6,则以上表达式为: a=333333-33333-3333-333-33-3其值是296298。X和n是fun函数的形参,表达式的值作为函数值传回main函数。请修改程序的错误,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includelong fun(int xjnt n)(intj;long a=O,t= 1;for(j=O;j=n;j+)t=t*l 0+x;a=t;fbr(j=l;jn;j+)(t=t%10;a=a-t;return(a);)main()(int x,