《全国计算机等级考试二级C历届上机真题.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C历届上机真题.docx(354页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、全国计算机等级考试二级C历届上机真题第1套 填充题 请补充fun函数,fun函数的功能是求n的阶乘。 注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干 表达式或语句。关键词:典型算法,递归#include long fun(int n) ( if(_1_) return (n*fun(2);return 3; main 0 (printf (T0!=%ldn,fun(10); )填充题答案 nl Kn n-1 1 ll IL填充题+答案ttinclude long fun(int n) ( if (n 1) return (n*fu
2、n(n-l); return 1; ) mainO ( printf(10!=%ldn”, fun(10); 改错题下列给定程序的功能是:读入一个整数k(2=k=10000),打印它的所有质因子(即所有为 素数的因子)。例如,若输入整数2310,则应输出:2、3, 5, 7, Ik 请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 关键词:语法,典型算法#include include /*found*/ IsPrime(int n);( int i, m;m = 1;/*found*/ for (i=2; in; i+) if !
3、 (n%i) (m = 0; break;return(m); main () ( int j, k;printf(*nplease enter an integer number between 2 and 10000:*); scanf(%d, &k);printf(*nnThe prime factor(s) of %d is(are)k);for (j=2; jk; j+)if (!(k%j) & (IsPrime(j)printf, %4d, j);printf(n);)改错题答案 UsPrime ( int n ) 2if (!(n%i) 改错题+答案 #include inclu
4、de /*found*/ IsPrime(int n) int i, m;m = 1;/*found*/ for (i=2; in; i+) if (! (n%i)m = 0;break;)return(m);main ()(int j, k;printf(*nplease enter an integer number between 2 and 10000:*);scanf (飞d, &k);printf(*nnThe prime factor(s) of %d is(are)k);for (j=2; jk; j+)if (!(k%j) & (IsPrime(j)printf ( %4d,
5、 j);printf(n);编程题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:返回低于平均分的人数, 并将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4, below中的数据应为10、20、30、40。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若 干语句。关键词:数组#include #include #include int fun(int score,int 叫 int below) main ()(int i, n, b
6、elow9;int score9 = 10, 20, 30, 40, 50, 60, 70, 80, 90);FILE *out;n=fun (score, 9, below);printf(*XnBelow the average score areout二fopen (out. dat*, w);for(i=0;in;i+) printf(*%d *, belowi); fprintf(out, %dn, belowi);fclose(out);编程题答案10203040#include #include ttinclude int fun(int score, int m, int be
7、low) (int i, k=0, aver=0;for(i=0;im;i+) aver+=scorei;aver/=m;for(i=0;im;i+) if(scoreiaver) (belowk=scorei;k+;return k;main()(int i, n, below9;int score9 = 10, 20, 30, 40, 50, 60, 70, 80, 90;FILE *out;n=fun (score, 9, below);printf(*nBelow the average score are out=fopen (out. dat, w);for(i=0;in;i+)
8、(printf(*%d belowi);fprintf(out,belowi);)fclose(out);第2套 填充题 请在函数fun的横线上填写若干表达式,使从键盘上输入一个整数n,输出斐波纳契数列。 斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如:0 1 1 2 3 5 8 13 注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干 表达式或语句。关键词:典型算法,递归 #include int fun(int n); main () ( int i, n = 0; scanf &n); for (i=0; in; i+
9、) printf(*%d 、 fun(i); int fun(int n) ( if (1) return 0; else if (2)return 1;else return 3;) 填充题答案 n=00=n !n n=l l=n fun(n-l)+fun(n-2) fun (n-2)+fun (n-1) 填充题+答案 #include int fun(int n); main() int i, n = 0; scanf(%d, &n); for (i=0; in; i+) printf(%d ”, fun(i);int fun(int n) if (n=0)return 0;else if
10、 (n1)return 1;elsereturn fun(n-l)+fun(n-2);i.改错题下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII 值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为 aBCDeFgH, b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。关键词:字符串#include #include void fun(char *p, char *q, char *c)(/*found*
11、/int k = 1;/*found*/while (*p != *q)if (*p *q)ck = *q;elseck = *p;if (*P)p+;if (*q)q+;k+;main ()char a10 = aBCDeFgH”, b10 = ABcd”, c80 = 0;fun (a, b, c);printf(The string a:);puts (a);printf(The string b:);puts(b);printf(The result:*);puts (c);改错题答案lint k = 0;lwhile(*p *q)改错题+答案include #include void
12、 fun(char *p, char *q, char *c) /*fotind*/int k = 0;/*found*/while (*p*q)(if (*p *q)ck = *q;elseck = *p;if (*p)p+; if (*q)q+;k+;)main()char a10 = aBCDeFgH”, b10 = ABcd”, c80 = 0;fun (a, b, c);printf(The string a:);puts(a);printf(The string b:);puts (b);printf(The result:*);puts (c);)编程题请编写函数fun,它的功能
13、是:求出1到1000之内能被7或11整除、但不能同时被7和II 整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若 干语句。关键词:数组,指针#include #include void fun(int *a,int *n) main ()(int aa1000, n, k;FILE *out;fun(aa, &n);out=fopen(*out. dat*, w);for(k=0;kn;k+)if(k+l)%10=0)(printf(%5dn, aak);fprintf (out, %dn”,
14、 aak);else(printf (*%5d, *, aak);fprintf (out, %d, , aak);fclose(out);编程题答案7, 11, 14,21,22, 28, 33, 35, 42, 4449, 55, 56, 63, 66, 70, 84, 88, 91, 9899, 105, 110, 112, 119, 121, 126, 132, 133, 140143, 147, 161, 165, 168, 175, 176, 182, 187, 189196, 198, 203, 209, 210,217, 220, 224, 238, 242245, 252,
15、253, 259, 264, 266, 273, 275, 280, 286287, 294, 297, 301, 315, 319, 322, 329, 330, 336341, 343, 350, 352, 357, 363, 364, 371, 374, 378392, 396, 399, 406, 407, 413,418, 420, 427, 429434,440,441, 448, 451,455, 469,473,476, 483484, 490, 495, 497, 504, 506, 511,517,518, 525528, 532, 546, 550, 553, 560,
16、561, 567, 572, 574581, 583, 588, 594, 595, 602, 605, 609, 623, 627630, 637, 638, 644, 649, 651, 658, 660, 665, 671672, 679, 682, 686, 700, 704, 707, 714, 715, 721726, 728, 735, 737, 742, 748, 749, 756, 759, 763777, 781, 784, 791, 792, 798, 803, 805, 812, 814819, 825, 826, 833, 836, 840, 854, 858, 86
17、1, 868869, 875, 880, 882, 889, 891, 896, 902, 903, 910913, 917, 931, 935, 938, 945, 946, 952, 957, 959966, 968, 973, 979, 980, 987, 990, 994,#include include void fun(int *a, int *n)(int i, j=0;for(i=2;i1000;i+)if (i%7=0|i%ll=0)&i%77!=0) aj+=i;*n=j;main () int aa1000, n, k; FILE *out; fun (aa, &n);
18、out=fopen(out. dat, w); for(k=0;kn;k+) if(k+l)%10=0) ( printf(%5dn, aak); fprintf (out, %dn”, aak); else printf (*%5d, aak); fprintf (out, %d, , aak); ) fclose(out); 第3套 填充题 请补充fun函数(char *s),该函数的功能是把字符串中的内容逆置。 例如:字符串中原有的字符串为abcde,则调用该函数后,串中的内容为edcba。 注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填
19、入所编写的若干 表达式或语句。关键词:字符串ttinclude #include ttinclude #define N 81 void fun(char *s) ( int i, n 二 strlen(s)-l; char t;for (i=0; in; i+, 1)( t = si;* 2;_3_; mainO ( char aN; printf(Enter a string:); gets(a);printf(The original string is:); puts(a); fun(a);printf(n);printfCThe string after modified:); pu
20、ts (a); 填充题答案 n-n-=ln=n-lsi = sn* (s+i) = *(s+n) sn = t* (s+n) = t填充题+答案ttinclude #include #include #define N 81 void fun(char *s)char t;for (i=0; in; i+, n-) t = si;si = sn;sn = t; main () ( char aN; printf(*Enter a string:*); gets(a);printf(The original string is:);puts(a);fun(a);printf(n);printf(
21、The string after modified:*); puts(a);) 改错题 下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串, 并取代原字符串。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 关键词:字符串#include #include void fun(char *s) ( int i, j;/*found*/for (i=0, j=0; si!=,0, ; i+)if (si=0 &si=9) sj = si;/*fourid*/ sj = 0;main () ( char it
22、em80; printf(*XnEnter a string gets (item);printf(*nnThe string is : %sn*, item);fun(item);printf(*nnThe string of changing is : %sn*, item);改错题答案3sj+=si;isj=;改错题+答案include #include void fun(char *s) int i, j;/*found*/ for (i=0, j=0; si!=0; i+) if (sj=& si=9)sj+=si;/*fourid*/sj= 0; main() ( char ite
23、m80;printf(*nEnter a string : gets (item);printf(*nnThe string is : %sn”, item);fun (item);printf(*nnThe string of changing is : %sn”, item);编程题请编写函数void fun(int x,int pp,int *n),它的功能是:求出能整除x且不是偶数的各整数, 并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为30,则有4个数符合要求,它们是1, 3, 5, 15。请勿改动主函数main和其他函数中的任何内容,仅在函
24、数fun的花括号中填入所编写的若 干语句。关键词:数组#include #include void fun(int x, int pp, int *n)int x, aa1000, n, i;FILE *out;printf (#nPlease enter an integer number: nzz);scanf (螺d, &x);fun (x, aa, &n);for(i=0;in;i+)printf (#%d *, aai);printf(n);fun (730, aa, &n);out - fopen(outdat, w);for (i = 0; i n; i+)fprintf (ou
25、t, %dn, aai);fclose(out);)编程题答案1573365ttinclude include void fun(int x, int pp, int *n)(int 1=1, j=0, k=0, *t=pp;for(i=0;i=x;i+)if(i%2!=0)j+;)for(i=0;ij;i+)if(x%ti=0)ppk=ti;k+;*n=k;mainO int x, aa1000, n, i;FILE *out;printf(*nPlease enter an integer number:n); scanf (*%d*, &x); fun (x, aa, &n); for(
26、i=0;in;i+) printf(*%d , aai); printf(n); fun (730, aay &n);out = fopen(out dat, w); for (i = 0; i n; i+) fprintf (out, %dn, aai); fclose(out);第4套 填充题 请补充fun函数,它的功能是:计算并输出n (包括n)以内能被3或7整除的所有自然数 的倒数之和。例如:在主函数中从键盘给n输入30后,输出为:s= 1.226323。 注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干 表达式或语句。#i
27、nclude double fun(int n) ( int i;double sum = 0. 0;for (i=l; -1; i+) if (i%3=0 2 i%7=0) sum += 3 J i;return sum; main() ( int n; double s;printf(*nlnput n:); scanf &n); s = fun(n); printf(*nns=%fn*, s); ) 填充题答案 i=iII1.0 (double)1 填充题+答案 #include double fun(int n) ( int i;double sum = 0. 0; for (i=l;
28、 i=n; i+) if (i%3=0 | i%7=0) sum += 1. 0/i; return sum; main() ( int n; double s;printf(*nlnput n:); scanf &n);s = fun (n);printf(nns=%fn”, s);【错题下列给定程序中,fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。例如, 给字符串 s 输入:AaaaBBb 123CCccccd,则应输出结果:upper=5, lower=9o 请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 关
29、键词:函数 #include include /*found*/ void fun (char *s, int a, int b) ( while (*s) ( /*fourid*/ if (*s=,A* & *s=a & *s=f z ) b+;s+;main () char s100;int upper = 0, lower = 0;printf(*nPlease a string :); gets(s);fun (s, &upper, & lower);printf(*n upper=%d lower=%dn”, upper, lower); i.改错题答案Ivoid fun (char
30、 *s, int *a, int *b) 2(*a)+;2(*b)+;改错题+答案#include #include /*found*/ void fun (char *s, int *a, int *b) ( while (*s) /*found*/ if (*s=A &*s=, a* & *s=, z ) (*b)+;s+; ) mainO ( char s100; int upper = 0, lower = 0; printf(*nPlease a string :); gets(s);fun (s, ftupper, & lower);printf(*n upper=%d lower
31、=%dn*, upper, lower); ) 编程题请编写一个函数void fun(char *tt,int pp),统计在tt字符串中a到z26个字母各自出现的次 数,并依次放在pp所指数组中。例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是: 33322110000000000000000000请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若 干语句。关键词:字符串,数组# include # include void fun(char *tt, int pp) main ()(char aa1000;int bb26, k;F
32、ILE *out;printf(*nPlease enter a char string:);scanf aa);fun(aa, bb);for(k=0;k26 ; k+)printfbbk);printf(n);fun(a bosom friend afar brings a distant land near”, bb); out = fopen(out. dat, w);for (k = 0; k 26; k+)fprintf (out, %dn, bbk);fclose(out);)编程题答案72032210300115200432000000# include # include v
33、oid fun(char *tt, int pp) ( int i;for(i=0;i26;i+)Ppi=0;while (*tt)(switch(*tt) (case a: pp0 +;break; case b: ppl+;break; case c: pp2+;break; case d: pp3+;break; case e: pp4+;break; case f : pp5+;break; case g: pp6+;break; case h: pp7+;break; case i: pp8+;break; case j : pp9+;break; case k: pp10+;bre
34、ak; case 1: ppl1+;break; case m: pp12+;break;case n: pp13+;break; case o: pp14+;break; case p: pp15+;break; case q: pp16+;break; case r: pp17+;break; case s: pp18+;break; case t: pp19+;break; case u: pp20+;break; case v: pp21+;break;case w: pp22+;break;case x: pp23+;break;case y: pp24+;break;case z:
35、 pp25+;break;tt+; )mainO (char aatlOOO;int bb26, k;FILE *out;printf(*nPlease enter a char string:*);scanf aa);fun(aa, bb);for(k=0;k26 ; k+)printfbbk);printf(n);fun(a bosom friend afar brings a distant land near”, bb);out = fopen(*out. dat, w);for (k = 0; k 26; k+)fprintf (out,bbk);fclose(out);)第5套填充
36、题请补充fun函数,其功能是:计算并输出给定10个数的方差:其中例如,给定的 10 个数为 15,0,19.0,16.0,15.0,18.0,12.0,15.0,11.0,10.0,16.0,输出为 s=2.758623。 注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干 表达式或语句。关键词:数组#include #include double fun(double x10) int i;double avg=0. 0;double sum=0. 0;double abs=0. 0;double sd;for (i=0;i10;i
37、+)sum += 1;avg=sum/10;for (i=0;i10;i+)2 (xi-avg)*(xi-avg);sd = 3(abs/10);return sd;main ()(double s, x10 = (15. 0, 19. 0, 16. 0, 15. 0, 18. 0, 12. 0, 15. 0, 11. 0, 10. 0,16. 0: int i;printf(*nThe original data is :n);for(i=0;i10;i+)printfC%6. ir,xi);printf(nn);s=fun(x);printf(s=%fnn,s);填充题答案xi*(x+i)
38、abs +=abs = abs +sqrt填充题+答案#include #include double fun(double x10)( int i;double avg=0. 0;double sum=0. 0;double abs=0. 0;double sd;for (i=0;i10;i+)sum+=xi;avg二sum/10;for (i=0;i10;i+) abs+= (xi-avg)*(xi-avg); sd=sqrt(abs/10); return sd; main () double s, x10=15. 0, 19. 0, 16. 0, 15. 0, 18. 0, 12. 0
39、, 15. 0, 11. 0, 10. 0, 16. 0; int i;printf(*nThe original data is :n); for(i=0;i10;i+)printfC%6. If*, xi); printf(*nn*); s=fun(x);printf C*s=%fnn*, s); 改错题假定整数数列中的数不重复,并存放在数组中。下列给定程序中,函数fun的功能是:删除 数列中值为x的元素,同时将其他元素前移。N中存放的是数列中元素的个数。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 关键词:数组#inclu
40、de define N 20 fun(int *a, int n, int x) ( int p = 0, i; an - x;while (x != ap) P = p+1; if (p = n) return -1; else (/*found*注:下面有两个错误*/ for (i=p; in; i+) ai+l = ai; return n-l; ) main() int wN = -3, 0, 1, 5, 7, 99, 10, 15, 30, 90, x, n, i; n = 10;printf(*The original data:n*);for (i=0; in; i+)printf(%5d, wi);printf(*nlnput x (to delete):*);scanf(%d, &x);printf(Delete :%dn, x);n = fun (w, n, x);if (n = -1)(printf(*Not be found!*nn*);)else (printf(The data after delete