《历年国家计算机二级C语言最全上机题库.docx》由会员分享,可在线阅读,更多相关《历年国家计算机二级C语言最全上机题库.docx(147页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1填空题L请补充fun函数,fun函数的功能是求10的阶乘。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include long fun (int n)/*found*/ if (nl)/*found*/return (n*fun(n-l);/* found*/else if (n=l)return 1;)main()|int k =10;printf(%d!=%ldn, k,fun ( k );)2 .请在函数fun的横线上填写若干表达式,使从键盘上输入一个整数n,输出斐波纳
2、契数列。斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如011235813请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include int fun(int n);main()(int i,n=0;scanf(M%dn,&n);for( i=0;in;i+)printf(H%d fun (i);)int fun(int n)/* found*/if(n=0)return 0;else/*found*/if(n=l)return 1;else/*found*/return
3、 fun(n-1)+fun( n-2);3 .请补充函数fun(char *s),该函数的功能是把字符串中的内容逆置。例如:字符串中原有的字符串为abcde,则调用该函数后,串中的内容为edcba。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!#include #include #include #defineN81 void fun(char *s)int i=0,t,n=strlen(s);/*found*/for(;s+is+n-1-i; i+)t=*(s+i);/*found*
4、/*(s+i)=*(s+n-l-i);/*found*/*(s+n-l-i)=t;1main()char aN;clrscr();printf(Enter a string:1*);gets(a);printf(HThe original string is:); puts(a);fun(a);printf(n);printf(The string after modified:);puts(a);4 .请补充函数fun,它的功能是:计算并输出n (包括n)以内能被3或7整除的所有自然数的倒数之和。例如,在主函数中从键盘给n输入30后,输出为:s=1.226323。请在程序的下划线处填入正确的
5、内容,并把下划线删除,使程序得出正确的结o注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!#include double fun(int n)int i;double sum=0.0;if(n0&n=100)/*found*/for (i=l;i=n;i+)/* found*/if(i%3=0lli%7=0)sum+=1.0/i;return sum;|main()(int n;double s;printf(v,nlnput n:”);scanf(H%dM,&n);s=fun(n);printf(,nns=%fnn,s);5 .给定程序的功能是求二分之一的
6、圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:S=3.14159*r*r,在程序中定义的变量名要与公式的变量相同)。例如,输入圆的半径值:19.527,输出为s=598.950017。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!#include /*求*found*/float fun (float r)/* found*/return 3.14X59* r * r/2.0;main () float x;printf (Enter x: H);/*
7、found*/scanf (%F,&x );printf (n s=%fn , fun ( x );6.给定程序的功能是计算并输出下列级数的前n项之和Sn,直到Sn大于q为止,q的值通过形参传入。Sn =2/1+3/2+4/3+(n+l)/n例如,若q的值为50.0,则函数值为50.416687。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include double fun( double q )int n;double s;n =2;s =2.0;/*found*/whil
8、e (s = q)s=s+(double)(n+l)/n;/* found*/n+;printf(n=%dn,n);/* found*/return s ;main ()|printf(%ln,fun(50);)7.函数fun的功能是:统计长整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量cl、c2、c3返回主函数。例如,当11=123114350时,结果应该为:cl=3 c2=l c3=2o请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include int c
9、l,c2,c3;void fun(long n) cl = c2= c3=0;while (n)/* found*/switch(n%10)/*found*/case X: cl+;break;/* found*/case 2: c2+;break;case 3: c3+;)n /=10;)main() long n=123114350L;fun(n);printf(nThe result :n);printf(n=%ld cl=%d c2=%d c3=%dn,n,cl,c2,c3);8 .请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为0时
10、结束。例如,当输入123540时,最大的数为5。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blank.c中,不得增行或删行,也不得更改程序结构!解:#include #include #deflne N 100 main()|int numN;int i=l;int max=0;clrscr();printf(nnlnput integer number:nM); doi+;printf(Hnum%d=H4);/*found*/scanf(%d,&numi);/*found*/max= maxnumi? numi: max;/*fo
11、und*/while(numi!=0);printf(n ma x=% dn *, max);9 .给定程序的功能是分别统计字符串中大写字母和小写字母的个数。例如,给字符串ss输入:AaaaBBbl23CCccccd,则输出结果应为:upper=5, lower=9o请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include void fun ( char *s, int *a, int *b )while (*s) if(*s =*A*&*s =a&*s =*z*)/*fou
12、nd*/(*b)+;s+;)main() char s100; int upper =0, lower =0;printf( nnPlease a string : H ); gets ( s );fun (s9& upper,&lower);/*found*/printf( Hn upper =%d lower =%dnH, upper, lower );10 .请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最大的数并输出。例如,输入:12,45,43,输出为45。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的bla
13、nk.c中,不得增行或删行,也不得更改程序结构!解:#include #include main()int a,b,c,max;clrscr();printf(unlnput three numbers:nH);scanf(M % d,% d,% d”,&a,&b,&c);printf(MThe three numbers are:%d,%d,%dnn,a,b,c); if (ab)/*found*/max=a;else/*foijnd*/max=b;if(maxc)/* found*/max=c;printf(max=%dn,max);11 .给定程序中,函数fun的功能是:把形参s所指字符
14、串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedgf。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include void fun(char *s) int i, n, k;char c;n=0;for(i=0; si!=0; i+) n+;/*found*/if(n%2=0) k=n-l ;else k=n-2;/
15、*found*/c=sk;for(i=k-2; i=l; i=i-2) si+2=si;/*found*/sl=C;main() char s80=tabcdefghtv;printf(unThe original string is :%snH,s);fun(s);printf(HnThe result is :%snH,s);12 .请补充fun函数,该函数的功能是将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入Are you come from Sichuan?”,则输出are you come from sichuan?Ho请在程序的下划线处填入正确的内容,并把
16、下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include #include #include char *fun(char tt)int i;for(i=0;tti;i+)/*found*/ if(tti=A)&(tti=Z)/* found*/ tti+=32;/*found*/return (tt);main()(char tt81;printf(unPlease enter a string:gets(tt);printf(HnThe result string is:n%sM,fun( tt);13 .请
17、补充fun函数,该函数的功能是判断一个数是否为素数。该数是素数时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include Hconio.hH#include Hstdio.hM /* found*/char *fun( int n ) int i, m;m=l;/*found*/ for(i=2;il) return(Hyes!M);else return(Hno!H);main()(int k=O;c
18、lrscr();printfClnput:1*);scanf(H%df&k);printf(M%snM,fun(k);14 .请补充fun函数,该函数的功能是:依次取出字符串中所有小写字母,形成新的字符串,并取代原字符串。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blankc中,不得增行或删行,也不得更改程序结构!解:#include #include void fun(char *s)int i=0;char *p=s;/* found*/while(*p)if(*p=,a,&*p=z)si=*p;/*found*/ i+;P+;
19、/*found*/ si=,0,;main()char str80;clrscr();printf(unEnter a string :H);gets(str);printf(,nnThe string is :%sn*str);fun(str);printf(nnnThe string of changing is :%snM,str);15 .给定程序的功能是判断字符ch是否与串str中的某个字符相同;若相同,什么也不作,若不同,则插在串的最后。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结o注意:源程序存放在考生文件夹下的blankc中,不得增行或删行,也不得更改程
20、序结构!解:#include #include void fun(char *str, char ch ) while (*str &*str != ch ) str+;/*found*/if (*str != ch ) str 0= ch;/*found*/strl=0;main() char s81, c;printf( HnPlease enter a string:nM ); gets ( s );printf (Hn Please enter the character to search : H ); c = getchar();/*found*/fun(s, c);printf(
21、 HnThe result is %sn, s);16 .请补充fun函数,该函数的功能是:判断一个年份是否为闰年。例如,1900年不是闰年,2004是闰年。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include #include int fun(int n) int flag=0;if(n %4=0)/*found*/if(n %100!=0) flag=l;/* found*/if(n %400=0)flag=l;/*found*/ return flag;main()
22、int year;clrscr();printf(MInput the year:);scanf(n % dn,&year);if (fun(year)printf(H%d is a leap year.n*year);elseprintf(H%d is not a leap year.nH,year);17 .给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的人数存到b数组中:成绩为60到69的人数存到b0中,成绩为70到79的人数存到bl,成绩为80到89的人数存到b2,成绩为90到99的人数存到b3,成绩为100的人数存到b4,成绩为60分以下的人数存到b5
23、o 解;#include void fun(int a, int b, int n) int i;for (i=0; i6; i+) bi=0;/*found*/for (i=0; i n; i+)if(ai60) b5+;/*求*found*/else b(ai-60)/10+;main() int i, a100=93,85,77,68,59,43,94,75,98, b6;/*found*/fun(a9 b,9);printf(Mthe result is:for (i=0; i6; i+) printf(H%d bi); printf(MnH);18.str为一个字符序列。请补充fun
24、函数,该函数的功能是:查找str中值为x 的元素,返回找到值为X的元素个数,并把这些值为X的元素下标依次保存在数组bb中。例如,在“ abcdefahij”中查找a,结果为:2个a,下标依次为0、6。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blankc中,不得增行或删行,也不得更改程序结构!解:#include #include #define N 20int bbN;int fun(char *str,char ch) int i=0,n=0;char t=ch;char *p=str;while (*p)/*found*/ i
25、f(*p=t)/*fourid*/ bbn+=i;P+; i+;/*found*/ return n;main() char strN;char ch;int i J,n;clrscr();print”* Input the original string*n );gets(str);printf(M* The Original string *n);puts(str);printf(M* Input character *nH);scanf(H%cn,&ch);n=fun(str,ch);printf(H nThe number of character is:%dn,n);printf(M
26、* The suffix of character *nM);for(i=0;in;i+)printf(,f %d ,bbi);)19 .给定程序的功能是计算score中m个人的平均成绩aver,将低于aver的成绩放在below中,通过函数名返回人数。例如,当 score=10,20,30,40,50,60,70,80,90, m=9时,函数返回的人数应该是4, below=10,20,30,40)0请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include #include
27、 int fun(int score, int m, int below) int i,j =0;float aver =0.0;for(i =0; i m ; i+) aver += scorei;aver /=(float) m ;for(i =0; i m ; i+)/* found*/if(scorei aver) belowj+= scorei;return j ;)main() int i, n, below9;int score9=10,20,30,40,50,60,70,80,90;/* found*/n = fun(score,9, below);printf( MnBelo
28、w the average score are: H ;/* found*/for (i =0; i n ; i+) printf(%d , belowi);20 .给定程序的功能是求出能整除x且不是偶数的各整数,并放在数组pp中,这些除数的个数由n返回。例如,若x的值为30,则有4个数符合要求,它们是1,3,5,15。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blank.c中,不得增行或删行,也不得更改程序结构!解:#include void fun(int x, int pp9 int *n) int iJ =0;for(i =
29、1; i = x ; i +=2)/* found*/if(x % i)=0) ppj+= i;/*found*/*n=j;main() int x9 aa10009 n, i;printf( HnPlease enter an integer number:nM ); scanf(n%dM,&x);/*found*/fun(x, aa,&n );for( i =0; i n ; i+) printf(%d, aai);printf(n);21.给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的
30、字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537o 请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include void fun(char *s) int i, j=0, k=0;char tl80,t280;for(i=0; si!=0; i+)if(si=0& si=9)else tlk+=si;t2j=0; tlk=O;/*found*/ for(i=0; ik; i+) si=tli;/*found*/ for(i=0; ij; i+
31、) sk+i=t2i;main() char s80=nba3a54j7sd567sdffsH;printf(HnThe original string is :%snM,s);fun(s);printf(unThe result is :%snfs);22.给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:de135adh3kjsdn。执行结果为: def3*5adh3*kjsdf7*o请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改
32、程序结构!解:#include void fun(char *s) int i,j, n;for(i=0; si!=0; i+)/* found*/if(si=0& sii; j-) sj+l= s|j;sj+l=*;i=i+l;main() char s80=nba3a54cd23aM;printf(nnThe original string is :%snM,s);fun(s);printf(HnThe result is :%sn*s);23 .请补充fun函数,fun函数的功能是求10的阶乘。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生
33、文件夹下的blankc中,不得增行或删行,也不得更改程序结构!解:#include #include /* found*/void fun(int x9int n)double sum=0.0;double average=0.0;int i;for(i=0;in;i+)/*found*/ sum+=xi;/*found*/average=sum/n;for (i=0;in;i+) if(xiaverage)(printf(%d,xi);)main()|int x1000;int i=0;clrscr();printf(nPlease enter some data(end with 0):)
34、; doscanf(%d,&xi);printf(%d ,xi);while(xi+!=0);fun(x,i-l);24 .函数fun的功能是:从三个形参a, b, c中找出中间的那个数,作为函数值返回。例如,当a=3, b=5, c=4时,中数为4。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blankc中,不得增行或删行,也不得更改程序结构!解:#include int fun(int a, int b, int c) int t;/* found */t =(ab)?(bc? b :(ac?c:a):(ac)?a :(bc)?c
35、:b);return t;main() int al=3, a2=5, a3=4, r;r = fun(al9 a2, a3);printf(unThe middle number is :%dnn, r);)25 .函数fun的功能是:逆置数组元素中的值。形参n给出数组中数据的个数。例如,若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include void fu
36、n(int a, int n) int i,t;/*found*/for (i=0; in/2; i+)t=ai;/* found*/ ai= an-l-i;/* found*/ an-i-l= t;)main() int b9=1,23,4,5,6,7,8,9, i;printf(nThe original data :n);for (i=0; i9; i+)printf(%4d , bi);printf(n);fun(b,9);printf(nThe data after invert :n);for (i=0; i9; i+)printf(%4d , bi);printf(n);26 .
37、请补充fun函数,该函数的功能求能整除x,且是偶数的数,把这些数保存在数组bb,并按从大到小输出。例如,当x=20时,依次输出:201042。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的blanks中,不得增行或删行,也不得更改程序结构!解:#include #include void fun(int k,int bb) int i;int j=0;/* found*/for (i=l;i=0;i) printf(H%d H,bbi);main() int k=l;int i;int bb100;clrscr();printf( HnPlease input XnM );scanf(H%dH,&k);fun(k9bb);27 .请补充fun函数,该函数的功能是:统计所有小于等于n (n2)的素数的个数,素数的个数作为函数值返回。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结o注意:源程序存放在考生文件夹下的blankc中,不得增行或删行,也不得更改程序结构!解:#include st