《浙江省计算机等级考试二级c理论试题.docx》由会员分享,可在线阅读,更多相关《浙江省计算机等级考试二级c理论试题.docx(101页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2009年春浙江省高等学校计算机等级考试试卷(二级C)说明:考生应将所有试题的答案填写在答卷上。其中试题一到试题六 请在答卷上的各小题选项的对应位置上填“请将你的准考证号的后五位填写在答卷右下角的指定位置内;考试时间为90分钟。试题1 (每小题3分,共12分)输入个正整数n,计算下列式的前n项之和。运行示例:Enter n:2Sum=0.67#include main()int denomiator,flag,i9n;double item,sum;printf(MEntern:n);scanf(M%dH,&n);denomiator=l; ;sum=0;for(i=l;(2);i+);sum
2、=sum+item;(4) :denomiator=denomiator+2;printf(MSum=% ,2fnM,sum);(1) A. flag=0 B. flag=-l;C. flag=n D. flag=l(2)A. i=nB.inD.i=n(3)A. item=flag/ denomiatorB. item=l/denomiatorC. item=flag* 1.0/denomiatorD. item=1.0/ denomiator(4)A. flag=-lB.flag=0C. flag=flagD.flag=flag试题2 (每小题3分,共12分)验证哥德巴赫猜想:任何个大于6的
3、偶数均可表示为两个素数之和。 例如6=3+3, 8=3+5,18=7+11。将6-20之间的偶数表示成两个素数之和 打印时一行打印5组。要求定义和调用函数prime(m)判断m是否为素数, 当m为素数时返回1,否则返回素数就是只能被1和自身整除的正整数 1不是素数,2是素数。运行示例:6=3+3 8=3+5 10=3+7 12=5+7 14=3+1116=3+13 18=5+13 20=3+17【程序】#include #include int prime(int m)int i,n;if(m=l)return 0;n=sqrt(m);for(i=2;i=n;i+)if(m% i=0)retu
4、m 0;(5)main()int count,i,number;count=0;for(number=6;number=20;number=number+2) for(i=3;i=number/2;i=i+2)if( (6)printf(M%d=%d+%d number,i,number-i); count+;if( (7) )printf(HnM):(8)(5)A.;C. return 0 ;B. return 1;D. else return 1;(6) A. prime(i)!=Ollprime(number-i)!=OB. prime(i)!=O&prime(number-i)!=OC
5、. prime(i)=Ollprime(nuniber-i)=OD. prime(i)=Ollprime(number-i)=O(7) A. count%5=()C. (count+l)%5=0(8) A. break;C. continue;B. count%5!=0D. (count+l)%5!=0B. else break;试题3输入一行字符,统计并输出其中数字字符、英文字符和其它字符的 个数。要求定义并调用函数count(s,digit,letter,other)分类统计字符串s中数 字字符、英文字符和其它字符的个数,函数形参s是字符指针,形参 digit,letter,other的类
6、型是整型指针,函数类型是void.运行示例:Enter charaters:f(x,y)=5x+2y-6Digit=3 Letter=5 Other=6#include void count(char *s,int digit,int letter,int other)(9)while( (10)if(*s=0,&*s=,a,&*s=,A,&*str80;printf(MEnter charaters:M);ch=getchar();while(11)stri=ch;i+;ch=getchar();)stri=O;(12);printf(HDigit=%d Letter=%d Other=%
7、dnH,digit,letter,other); )(9) A. int digit=0,letter=0,other=0;B. int *digit=0,*letter=0,*other=0;C. digit=letter=other=0;D. *digit=*letter=*other=0;(10)A. *s+!=*0,B. *s+!=nC. *s!=,0,D. *s!=n(11)A. ch!= AO*B. ch!nC. ch= *0D. ch= *n(12)A. count(stn&digit,&letter,&other)B. count(&sti;&digit,&letter,&ot
8、her)C. count(*sti;digit,lettei;other)D. count(*sti;*digit,*lettei;*other)试题4#include main()int flag=0,i;int a7=8,9,7,9,8,9,7);for(i=0;i=0;i-)if(ai=8)break;flag-i;printf(M%dnM,nag);flag=O;for(i=0;i7;i+)if(ai=9)printf(n%dH4);)printf(,nu);flag=O;for(i=0;i7;i+)if(ai=7) flag=i;printf(H%dnMlag);(13)程序运行时,
9、第1行输出(13)A. 2C. 3B. 0;D. 6(14)程序运行时,第2行输出(14)。A. 4B. -1C. 0D. 5(15)程序运行时,第3行输出(15)A. 246B. 4C. 135D. 6(16)程序运行时,第4行输出(16)。A. 24 6B. 2C. 135D. 6试题5#include int fl(int n)if(n=l)retum 1;else return fl(n-l)+n;)int f2(int n)switch(n) case 1:case 2:retum 1;default: return f2(n-l)+f2(n-2);void f3(int n)pri
10、ntf(H%dM,n%10);if(n/10!=0)f3(n/10);void f4(int n) if(n/10!=0)f4(n/10); printf(dm%10);) main()printf(u%dnn(4);print dn”財(4);f3(123);printf(iT);f4(123);printf(MnH);(17)程序运行时,第1行输出 (17)A.10B.24C. 6D.1(18)程序运行时,第2行输出 (18)A.1B.3C.2D.4(19)程序运行时,第3行输出 (19)A.123B.3C.321D.1(20)程序运行时,第4行输出 (20)A.1B.123C.3D.32
11、1试题6include struct numint a;int b;);void f(struct num s, int n)int index, j, k;struct num temp;for (k=0;kn-l;k+)index=k;for(j=k+l;jn;j+)if(sj. bsindex. b)index=j; temp=sindex;sindex=sk; sk=temp;。int count , i, k, m, n, no;struct num s100,*p;scanf (%d%d%d, &n, &m, &k);for(i=0;in;i+)si.a=i+l;si. b=0;P
12、=s;count=no=0;while(nob=0)count+;if(count=m)no+;p-b=no;count=0;p+;if (p=s+n)P=s;f (s,n);printf(%d:%dn”, sk-l. b, sk-l.a)(21)程序运行时,输入5 4 3,输出 (21).A. 3:5B. 2:3C. 1:2D. 4:1(22)程序运行时,输入5 3 4,输出(22).A. 3:5B. 1:2C. 4:3D. 4:2(23)程序运行时,输入752,输出(23)0A. 1:5B. 6:1C. 2:3D. 2:4(24)程序运行时,输入4 2 4#,输出 (24).A. 3:3B
13、. 4:2C. 2:4D. 4:1试题 (28分)(1)定义函数fact(n)计算!的阶乘:n!=l*2*n,函数形参!的类型是 int,函数类型是double。(2)定义函数cal (x,e)计算下列算式的值,直到最后一项的绝对值小于e, 函数形参x和e的类型都是double,函数类型是doubleo要求调用自定义 函数fact(n)计算n的阶乘,调用库函数pow(x,n)计算x的n次基。(3)定义函数main(),输入两个浮点数x和e,计算并输出下列算式的值, 直到最后项的值小于精度e,要求调用函数cal (x,e)计算下列算式的值。XXXS = X + + + 2!3!4!参考程序:#i
14、nclude #include (l)double fact(int n)int i;double t=l;for(i=l;i=e)(sum=sum+pow(x,i)/fact(i);i+;)return sum;)(3)main()double x,e,sum;scanf( If% lfn,&x,&e);sum=cal(x,e);printf(nsum=% fW/um);)选着题:Adcc bbaa dcba abed abeb aded2008年秋浙江省高等学校计算机等级考试试卷(二级C)试题1(第小题3分,共12分)【程序说明】输入批学生的成绩,遇到负数表示输入结束,要 求统计并各等级成
15、绩的学生个数。成绩等级分为三级, 分别为 A (910)、P (680)和 F (59)。运行示例:Enter scores:88 71 68 70 59 81 91 0 60 77 83 -10A:1;P:8;F:2;程序#include main() int mark,a,p,f;a=p=f=0;printf(Enter scores:);scanf(%d ,&mark);whi le(GJ)if(mark=90)a+;(2)p+;(3)f+:(4) printf(A:%d;P:%d;F:%d;n,a,p,O;【供选择的答案】(1) A mark=0C、mark=60)C、else (ma
16、rk=60)(3) A else (mark0)或填 else if(mark=0)(4)A、scanf(%d,mark);C、;案:Bmark0D、mark=60)D、if(mark90)答案:AB、elseD、else if(mark=60)答案:BB、scanf(%d,&mark);D、mark=getchar(); 答试题2(第小题3分,共12分) 【程序说明】求1999之间所有满足各位数字的立方之和等于它 本身的数。例如153的秋位数字的立方和是!3+53+3;,=153 运行示例:1 153 370 371 407程序、#include main() int digit,j,sum
17、,x;for(j=l;j1000;j+)(6)dosum=sum+digit*digit*digit;x=x/10; while (8);if(j=sum)printf(%d ,sum);【供选择的答案】(5) A sum=O;B、sum=l;C、sum=j;D、;答案:A(6)A、x=l;B、x=j;c、;D x=sum;答案:B(7) A digit=x/10;B、digit=x;C、digit=x%10; D、;答案:C(8) A、x=0B、j!0C、j=0D、x!=0答案:D试题3(第小题3分,共12分)【程序说明】输入10个整数,将它们从大到小排序后输出运行示例:Enter 10 i
18、ntegers: 10 98 -9 3 6 9 100 -1 0 2After sorted: 100 98 10 9 6 3 2 0-1 -9程序#include (9)void sort(10)int i,index,k,t;for(k=0;kn-l ;k+)index=k;for(i=k+l ;iaindex)index=i;(11)void swap(int *x,int *y)int t;t=*x;*x=*y;*y=t; int i,a10;printf(Enter 10 integers:);for(i=0;i10;i+)scanf(%d,&ai);(12) :printf( Af
19、ter sorted:);for(i=0;i void swap(int *x,int *y);*y);答案:C(10)A、int &a,int nC、int *a,iny n 答案:C(11)A swap(*aindex,*ak)C、swap(index,k) swap(&aindex,&ak)答案: (12)A、sort(a)C、sort(a,10)答案:D试题4(第小题3分,共12分) 阅读下列程序并回答问题, 答案中挑选一个正确答案。程序 程序1#include B、;D void swap(int *x,B int *a,int *nD、int a,int *nB、swap(aind
20、ex,ak)DB、sorta10D、sort(a, 10)在每小题提供的若干可选main() intj,k,sl,s2;sl=s2=0;for(j=0;j=5;j+)sl+;for(k= 1 ;k=j ;k+)s2+;printf(%d %d,sl,s2);程序2#include main() int j,k,sl,s2;sl=O;fbr(j=l;j=5;j+)sl+;for(k= l,s2=0;k=j;k+)s2+;printf(%d %d,sl,s2);程序3#include main() int j,k,sl,s2;sl=O;for(j=l;j=5;j+)si+;for(k= 1 ;k=
21、j ;k+,s2=0)s2+;printf(%d %d,sl,s2);程序4#include main() int j,k,sl,s2;sl=s2=0;for(j=l ;j=5 ;j+,sl =0)sl+;for(k=l ;k5j;k+)s2+;)printf(%d %d,sl,s2);)(13)程序1运行时。输出 (13)。答案:DA、 0 15B、 5 0C、5 5D、5 15(14)程序2运行时。输出(14)。答案:CA、 015B、50C、 55D、515(15)程序3运行时。输出(15)。答案:BA、 015B、50C、 55D、515(16)程序4运行时。输出(16).答案:AA、
22、 0 155 0C、5 5D、5 15试题5(第小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选个正确答案。【程序】程序1#include main() int i,m=15,y=-l;for(i=2;i=m/2;i+)if(m%i=O)y=O;else y=l;printf(%d,y);程序2#include main() int i,m=15,y=-l;for(i=2;i=m/2;i+)if(m%i=O) y=O;break;printf(%d,y);程序3#include main() int i,m=15,y=-l;for(i=2;im/2)y=l;else
23、 y=0;printf(%d,y);程序4#include main() int i,m=15,y=-l;for(i=2;i=m/2;i+)if( m%i=O)break; y=0;printf(%d,y);(17)程序1运行时。输出 (.答案:AA、1B、0C、15D、-1(18)程序I运行时。输出 (18)。答案:BA、1B、0C、15D、-1(19)程序I运行时。输出 (19)。答案:BA、1B、0C、15D、 1(20)程序1运行时。输岀 (20)。答案:DA、1B、0C、15D、-1试题6(第小题3分洪12分)阅读下列程序并回答问题,在每小题提供的若干可选答 案中挑选个正确答案。【程
24、序】#include main() int k;char ch,a10,*s10=one,two,three,four;k=0;while(ch=getchar()!=n&k5 &ch two threeB、twoC one four threeD four three two one试题7(28分)(1)定义函数fact(n)计算n的阶乘:n!=l*2*n,函数的返回值类型是double(2)定义函数cal (e)计算下列算式的值,直到最后项 的绝对值小于e,函数的返回值类型是doubleo(3)定义函数main。输入正整数n,当精度e分别取值 10-1、10-2、10-3、10-n时,分别
25、计算并输出下列式 的值,直到最后项的绝对值小于精度e,以比较不同精 度下算出的结果。要求调用函数cal (e)计算下列算式的。参考程序:#include #include (1) double fact(int n) int i;double t=l;for(i=l;i=e) t=fact(i);sum=sum+1.0/t;i+;return sum;(3) main()int n,i;while(scanf(%d,&n),n=O);fbr(i=l;i=2),输入菲波那契序 列的前n项,每行输出6个数,菲波那序列:1, 1, 2, 3, 5, 8, 13,数列的前两个数都是!,从第三项开始,每
26、个数是前两个数之和。运行示例:Enter n: 1011235813213455#include main()int count,i,n,xl ,x2,x;printf(Enter n:);scanf(%d,&n);x1=x2=1;printf(%6d%6d,xl,x2);(1) ;for(i=l ;i=n-2;i+)I (2);printf(%6d,x);count+;if( (3)printf(n);count=0D、count=-1答案:AB、 x=x1+x2D、x=2答案:BB count%6!=0D、count/6!=0 答案:CB、 x2=xlD、x2=x 答案:D,共12分)(4
27、)【供选择的答案】A、count=2C count=l(2) A、x=x 1 -x2C、x=x1(3) A、count/6=0C count%6=0(4) A、x=x 1 +x2C、 x=x2试题2 (每小题3分【程序说明】输入2个正数m和n (l=mn=500),统计交输出 m和n之间素数的个数以及这些素数的和,要求定义和 调用函数prime(m)判断m是否为素数,当m为素数返回 1,否则返回0。素数就是只能被1和自身整除的正整,1不是素,2是素数。运行示例:Enter m,n:l 10count=4,sum=17【程序】#include #include int prime(int m)i
28、nt i,n;if(m 1 )return C5);n=sqrt(m);for(i=2;i=n;i+)if(m%i=0)retum (6jreturn C7);main()int count=0,i,m,n,sum=0;printf(Enter m,n:);scanf(%d%d,&m,&n);for(i=m;i=n;i+)if( (8)sum+=i;count+;printf(count=%d,sum=%dn,count,sum);)【供选择的答案】(5)A、1B、mC m= 1D、0答案:DA、mB、1C、0D、n答案:CA、mB、1C、0D、i=n答案:B A、prime(i)!=0pri
29、me(i)=0C、!=prime(i)D、!prime(i)答案:A试题3 (每小题3分,共12分)【程序说明】输入个2*3的二维数组,找出最大值以及它的行下标和列下标,并输出该结果。运行示例:Enter array(2*3):3 2 10 -9 6 -1max=a02=1032 10-96 -1#include main()int col,row,i,j;int a23;printf(Enter array(2*3):);for(i=0;i2;i+)for(j=0;j3;j+)scanf(%d,(9);(10);for(i=0;i2;i+)for(j=0;jarow col)printf(
30、max=a%d %d=%dn ,ro w,col,arow col);for(i=0;i2;i+) for0=0;j row=col=2;B、row=col=0;C arowcol=0;D、arowcol=-l;答案:B(11) A row=j;col=i;B、arow col=ai j;C、row=i;col=j;D、arowcol=aji;答案:c(12) A、printf(n”);B、printf(n”);c、;D、printf(n); 答案:D试题4 (每小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选个正确答案。【程序】#include main()int
31、 opl,op2,res;char opertor;scanf (%d,&opl);opertor=getchar();scanf (%d,&op2);case +:res=op 1 +op2 ;break;case -:res=opl -op2;break;case *:res=opl *op2;break;case 7:res=opl/op2;break;default:res=O;opl=res;opertor=getchar();)printf(%dn,res);)(13)程序运行时,输入2*3-2=,输岀 (13 )A、6C、0(14 )、(14)B、2D、4答案:D15+2/3=,
32、输出程序运行时,输入A、16B、15C、6D、5答案:D(15 ) 程序运行时,输入 1+2*10-10/2=,输出(15)A、10B、16C、15D、25答案:A4、程序运行时,输入1+3*5/2-7=,黜_(16).A、3B、1C、-2D、-3答案:A试题5 (每小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选个正确答案。【程序】#include #define MAXLEN 80main()int k=0,number=0;char strMAXLEN;while(strk=getchar() !=#)k+;strk=A0;for(k=0;strk !=、0;
33、k+)if(strk=0& strk=0& strk=9)number=number* 12+strk-O;else if(strk=A,llstrk=B)number=number* 12+strk-A+l 0;else第 15 行 else break; 第 16 行 printf(%dn,number);(17)、程序运行时,输入10#,输出 (17)A、 !6B、 10C、!2D、1答案:A(18)、程序运行时,输入laO#,超 (A、 264B、 10C、ID、12答案:C(19)、第16行改为“后,程序运行时,输入A#,输出 (19).A、0B、120C、!0D、12答案:B(20
34、)、第!6行改为“else break;删除第!5行后,程序运行时,输入IbO#,输出 (20)0A、!0B、12C、276D、1答案:B 试题6 (每小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选个正确答案。【程序】#include #include main() char *s2=*,*;while(*sl!=O)printf(%sn,sO+strlen(sl)-l);sl+;(21)、程序运行时,第1行输出 (19)A、*B、*C、*D、答案:D(22)、程序运行时,第2行输出(19)A、*B *C、*D、答案:C(23)、程序运行时,第3行输出(19)A、
35、 *B *c *D、答案:B(24)、程序运行时,第4行输出(19).A、 *B、*c *D、答案:A试题7 (28分)1、定义函数fact(n)计算n的阶乘:n!=l*2*3*n,函数的返回值类型是double2、定义函数cal(m,n)计算累加和:s=m+(m+1 )+(m+2)+n,函数的返回值类型是double3、定义函数main。,输入整数n,计算并输出下列算式的 值。该算式中,每项的分子是累加和,要求调用函数 cal(m,n)计算累加和;每一项的分母是阶乘,要求调用函 数 fact(n)计算 n ! y= 1+(1+2)/2!+( 1+2+3)/3!+(1+2+3+n) /n!#i
36、nclude double fact(int n)第一题 int i;double t= 1;for(i=l;i=n;i+)t*=i;3double cal(int m,int n) 第二题double s=0;int i;for(i=m;i=n;i+)s+=i;3main。/第三题int n,i;double s=0;printf(请输入一个正整数:);while(scanf(%d,&n),n=0);for(i=l;i=n;i+)s+=cal(l,i)/fact(i);printf(%f,s);2007年秋浙江省高校计算机等级考试试卷(二级C)试题1 (每小题3分,共12分)程序说明输入2个整数lower和upper,