《c语言程序设计》二级学习资料(2017年).docx
C语言程序设计学习资料(2016/201?学年)班级:学号:姓名:浙江万里学院基础学院计算机教学部C语言程序设计课程组2017年1月目录理论资料(共14套试题)12010年上半年等考真题12010年下半年等考真题62011年上半年等考真题112011年下半年等考真题172012年上半年等考真题232012年下半年等考真题282013年上半年等考真题342013年下半年等考真题402014年上半年等考真题462014年下半年等考真题522015年上半年等考真题582015年下半年等考真题652016年上半年等考真题712016年下半年等考真题77上机资料83程序改错题83程序填空题91程序设计题197程序设计题2103理论资料2010年春浙江省高等学校计算机等级考试(二级C)、程序阅读与填空(24小题,每小题3分,共72分)1.【程序说明】输入一整数,求它的各位数字之和及位数。如,:L的各位数字之和是8,位数是2。运仃示例:Enter an integer:-153 sum =81 count =3【程序】#include <stdio.h> main () int count =0, in, sum =0; printf(nEnter an integer:n); scanf(n%dn,&in);if (1) in =-in;dosum = sum +(2);(3) ;count+;while(4);printf (,fsum =%d, count =%dnM, sum, count);【供选择的答案】(1)A.in =:0B.in>0C.in !=:0D.in<0(2)A.in /10B.inmod 10C.in %10D.in(3)A.in =in%10B.in/10C.in =in/10D.in%10(4)A.in %10i =:0B.in!=0C.!inD.in/10!=02 .【程序说明】输出50到0之间的所有素数。要求定义和调用函数isprime(m)判断m是否为素数,若m为素数则返回1,否则返回。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。运行示例:53596167【程序】#include <stdio.h>#include <math.h> main() int i; int isprime(int m); for(i =50; i <=70; i+) if(5)printf(n%d ”, i);int isprime(int m) int i, k;k =(int)sqrt(double)m);for(i =2; i <= k; i+)if (m % i =0)(7)(8)_;【供选择的答案】(5) A. isprime (m) != 0C. isprime (m) = 0(6) A. if(m != 1) return 1;C.;(7) A. return 0C. return i <= k(8) A. return 1C. returnB. isprime (i) != 0D. isprime (i) = 0B. if(m = 1) return 0D. if(m = 1) return 1.B. return 1D. returnB. return 0D. return i <= k3 .【程序说明】输入6个整数,找出其中最小的数,将它和最后个数交换,然后输出这6个数。要求定义和调用函数swap (x, y),该函数交换指针x和y所指向单元的内容。运行示例:Enter 6 integers: 61 8 2 10 97After swaped:69782101【程序】 void swap(int *x, int *y) int t;(9) ; main() int i, index, a 10;printf(MEnter 6 integers:n); for(i =0; i <6; i+)scanf(n%dn,&ai);(10) ;for(i =1; i <6; i+) if(aindex> ai)(11);(12) ;printf(nAfter swaped:n);for(i =0; i <6; i+) printf(n%d ”,a i);printf("n");【供选择的答案】(9) A. t =*x,*x =*y,*y = tB. t = x, x = y, y = tC. *t =*x,*x =*y,*y =*tD. &t = x, x = y, y = &t(10) A. index = 0C. index = index(11) A. aindex = aiC. ai = aindex(12) A. swap(aindex, a5)8. swap(*aindex, *a5) C. swap(a*index, a*5) D. swap(&aindex, &a5)4.【程序】#include <stdio.h>#define T(c) (c) >= ,01) && void fl(char ch) switch(ch)case * 01: printf("”); case 111: printf("1”); case * 2 *: printf(”2”); case 131: printf(n3n); default: printf(”9”);B. index = 5D index = 1 B. i = indexD. index = i(c) <=勺)? (c) 0 : -1)break;printf(”n”);double f2() return (double)(5/2);double f3(int n) if(n = 1) return 1.0;else return 1.0 + 1.0/f3(n-1);main ()printf(”落d %dn”, T('7'), T(,a,);fl Cl*);printff2);printf(n%.3fnnz f3(4);)【问题】(13)程序运行时,第1行输出(13)A.7-1B.-17C.7 aD.-1-1(14)程序运行时,第2行输出(14)OA.1239B.12C.1D.9(15)程序运行时,第3行输出(15)0A.2.5B.2C.2.0D.3(16)程序运行时,第4行输出(16)A.1.000B.2.000C.1.500D.1.6675.【程序】程序1#include <stdio.h>main() int i, j, t, a34=1,2,3,4,5,6,7,8,9,10,11,12;for(i =0; i <3; i+)for(j =0; j <= i/2; j+)t = aij, aij= ai3-j, ai3-j= t;printf(H%dnu, a01);printf(M%dnM, a22);)程序2#include <stdio.h>main() char str10= n27n;int i, number =0;for(i =0; stri!='、' i+)if(str>='O'&& stri<='7')number = number *8+ stri-''printf("%dnn, number);for(i =0; stri!='0' i+)if(stri>=''&& stri<='5') number = number *6+ stri-'' printf("%dnn, number);)【问题】(17)程序1运行时,第!行输出(17)。A.3B.4C.1D.2(18)程序1运行时,第2行输出(18)«A.12B.11C.10D.9(19)程序2运行时,第1行输出(19)A.2B.27C.23D.16(20)程序2运行时,第2行输出(20)A.19B.140C.147D.26.【程序】#include <stdio.h> main() int i, j;char ch,*pl,*p2,*s4=nfourn,nhellon,npeakn,napplen; for(i =0; i <4; i+)pl = p2= si;ch =*(pl + i);while(*pl !='XO1) if(*pl != ch)*p2=*pl;p2+;) pl+;*p2=,for(i =0; i <4; i+) printf (,%sn,t, s i);)【问题】(21)程序运行时,第1行输出(21)«A. ourB. fourC. furD. fou(22)程序运行时,第2行输出(22)A. elloB. hlloC. heoD. hell(23)程序运行时,第3行输出(23)A. peakB. eakC. pekD pak(24)程序运行时,第4行输出(24)A. ppleB. appleC. aleD. appe二、程序编写(每小题14分,共28分)1 .编写程序,输入100个整数,将它们存入数组a,求数组a中所有奇数之和。2 .按下面要求编写程序:(1)定义函数total(n)计算1+2+3+.+n,函数返回值类型是int。(2)定义函数main(),输入正整数n,计算并输出下列算式的值。要求调用函数total ( n)计算1+2+3+5=1+1+211u1+2+3 1+2+3+n2010年下半年浙江省高等学校计算机等级考试二级c程序设计试卷说明:本试卷共6页,满分100分;考试时间为90分钟;考生应将所有试题的答案填写在答卷上。其中试题到试题六请在答卷上的各小题选项的对应位置上填“才。考生应将所有试题的答案填写在答卷上。、程序阅读与填空(24小题,每小题3分,共72分)1 .阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选个正确答案【程序说明】输入5个整数,将它们从小到大排序后输出。运行示例:Enter an integer:9-9360After sorted:-90369【程序】#include <stdio.h> main() int i,j, n, t, a10;printf("Enter 5 integers:");for(i =0; i <5; i+)scanf("%d",(1);for(i =1;(2): i+)for(j =0:(3): j+)if(4)t = aj,aj= aj+l, a|j+l= t;)printf("After sorted:");for(i =0; i <5; i+) printf("%3d", ai);)【供选择的答案】(1)A>&aiB、aiC、aD、an(2)A、i<5B、i<4C、i>=0D、i>4 A、j <5-i-lB、j<5-iC、j<5D、j <=5(4) A、aj<aj+lB、aj>aj-lC、aU>aU+lD、aj-l>aj+l2 .阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选个正确答案【程序说明】输出80到120之间的满足给定条件的所有整数,条件为构成该整数的每位数字都相同。要求定义和调用函数is(n)判断整数n的每位数字是否都相同,若相同则返回1,否则返回。运行示例:8899111【程序】#include <stdio.h> main() int i; int is(int n); for(i =80; i <=120; i+) iff (5)printf(M%d ”,i);printf(,'nM);int is(int n) int old, digit;old = n%10;dodigit = n%10;iff (6) return 0;(7)n = n/10;while(n !=0);(8)【供选择的答案】 A、is(n) = 0 B、is(i) = 0(6)A、digit != n % 10C、old = n % 10C、is(n)!=0 D、is(i) != 0B digit = oldD、digit != old(7) A> digit = old; B> C、old = digit; D、old = digit /10;(8) A、return; B、return 1; C、return 0; D、return digit != old;3.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选个正确答案【程序说明】输入一个以回车结束的字符串(少于80个字符),将其逆序输出。要求定义和调用函数reverse(a),该函数将字符串s逆序存放。运行示例:Enter a string:1+2=3After reversed:3=2+1【程序】#include <stdio.h>void reverse(char *str) int i,j, n =0;char t;while(strn!=、')n+;for(i =0,(9); i < i;(10)t = str|i, stri= strj, strj= t;) main() int i =0;char s8O;printfifEnter a string:'');while(11)i+;si(T;(12);printff'After reversed:");puts(s);1【供选择的答案】(9) A a j = n-1 B、j = nC、j = n -2 D、j = n +1(1O)A i+, j-B、i+, j+ C、i-,j+D、i-, j-(11)A、si= getchar()B、(si= getchar()!=5n'Cn si!="D、(si= getchar()!='n')(12)A reverse(*s) B、reverse(s) C> reverse(&s) D> reverse(str)4 .阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选个正确答案【程序】#include <stdio.h>#define S(x)3<(x)<5int n, a;void fl (int n) for(; n >=0; n-)if(n %2!=0) continue;printff'%d ", n);)printff'n'');double f2(double x, int n) if(n =1) return x;else return x * f2(x, n-1);)main() int a =9;printf("d %dn' a, S(a);fl (4);printf(".lfn",f2(2.0,3);printf("d %dnH, n, S(n);【问题】(13)程序运行时,第1行输出A、01(14)程序运行时,B、91第2行输出(14)C、00D、90A、31B、420C、4321D、0(15)程序运行时,第3行输出(15)A、8.0B、2.0C、4.0D、3.0(16)程序运行时,第4行输出(16)A、01B、31C、00D、305 .阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选个正确答案【程序】程序1#include <stdio.h>main() inti,j;static int a44;for(i =0; i <4; i+)for(j =0;j<= i;j+)if(j =0|lj = i) aij=1;elSeaij= ai-lj-l+ ai-lj;)for(i =2; i <4; i+)for(j =0;j <= i;j+)printfrd”,则;printff3;)程序2#include <stdio.h>main() char str80;int i;gets(str);for(i =0; str国!=(F; i+)if(stri=5z5) stri='a'else stri= stri+1;puts(str);)【问题】(17)程序1运行时,第1行输出(17)A、1B、11C、121D、1331(18)程序1运行时,第2行输出(18)A、1B、11C、121D、1331(19)程序2运行时,输入123,输出(19)A、123B、012C、231D、234(20)程序2运行时,输入sz,输出(20)。A、szB> tyC、taD、tz6 .阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选个正确答案【程序】#include <stdio.h>main() int ij;char ch,*s4="tree",“flower",“grass”Jgarden”,*pl,*p2;for(i =0; i <4; i+)p2= si;pl = p2+ i;while(*pl !=、)*p2=*pl;pl+,p2+;*p2='、')for(i =0;i<4; i+)printf(,'%snn,si);【问题】(21)程序运行时,第1行输出(21)A、reessC、treeD、e(22)程序运行时,第2行输出(22)A、flowerB、owerC、werD、lower(23)程序运行时,第3行输出(23)A、grassB、ssC、rassD、ass(24)程序运行时,第4行输出(24)A> enB、ardenC、denD、garden二、程序编写(每题14分,共28分)1 .输入100个整数,将它们存入数组a中,再输入个整数x,统计并输出x在数组a中出现的次数。2 .按下面要求编写程序:(1) 定义函数fact(n)计算n!,函数返回值类型是double。(2) 定义函数main。,输入正整数n,计算并输出下列算式的值。要求调用函数fact(n)计算n!。n -1n -21S = n +2!3!川2011年上半年浙江省高等学校计算机等级考试:级c程序设计试卷说明:本试卷共6贝,满分100分;考试时间为90分钟;考生应将所有试题的答案填写在答卷上;程序阅读与填空全部是选择题,请在答卷上的各小题选项的对应位置上填“ J”;请将你的准考证号的后五位填写在答卷右下角的指定位置内。、程序阅读与填空(24小題,每小题3分,共72分)1.阅读下列程序说明和程序,在每小题提供的若干可选答案巾,挑选个正确答案。【程序说明】输入正整数n,计算并输出1/2+2/3+3/5+5/8+的前n项之和,保留2位小数。(该序列从第2项起,每项的分母是前一项分子与分母的和,分子是前项的分母)【程序】#include <stdio.h>void mainOint i,n;double denominator,numerator,sum,temp;scanf("%d",&n);numerator I;denominator=2;sum=0;for(i=1;Q);i+)sum=sum+(2) temp=denominator;;:)printf("sum=%.2fn",sum);I【供选择的答案】C、nD、i>nB、numerator/ denominatorD、numerator(1) A> i<=nB、i<n A、denominator/numeratorC、denominator3 3) A、numerator numerators denominatorB、denominator=numeratorC denominator numerator+ denominatorD, denominator=temp4 4) A、denominator=tempB、denominator=numeratorC、numerator denominatorD、numeralortemp5 .阅读下列程序说明和程序,在毎小题提供的若干可选答案中,挑选个正确答案。【程序说明】输出150到200之间有!只有一位数字为9的所有整数。要求定义和调用函数is (n, digit)判断正整数n是否有!只有一位数字为digit,若满足条件则返回1,否则返回0。运行示例:159169179189190191192193194195196197198【程序】#include <stdio.h>void mainQ(inti;intis(intn,int digit);for(i=150;i<=200;i+)iff (5) printf("%d ",i);printf("n");)int is(int n,int digit)(int count=0;doiff )count+;n=n/10;)while(7);if(8) return 1;else return 0;【供选幷的答案】(5) A,!is(n,digit)B、is(i,9)=0C、is(n,9)!=0D、is(i.9)!=0(6) A、n%IO=9B、n=digi(C, n%10=digilD、n/1()=digit(7) A, n/10!=0B、n!=0C, n%10!=0D、 n=0 A、count=lB、count !=1C、count !=0D、count=06 .阅读下列程序说明和程序,在每小题梶供的若干可选答案中,挑选个正确答案.【程序说明】输入个以回车结束的字符串(少于io个字符),将K中的数字字符转换为够数输出.要求定义和调用函数aioi(K),该函数将字符串8转换为幡数运行示例:Enter a string:1+2=3The integer:123【程序】#include <stdio.h>int atoi(char *s)Iint i,sum=0;for(i=0;;i+)if(si>='0'&& si<='9') GO):return sum;)void mainO int i;char s80;printf("Enter a string:");while(si=getcharO)!='n')i+;(IDprintf("The i nteger:%dn",(12);)【供选择的答案】C、i<n D、sum!=0B、sum=sum+siD、sum=sum+si-*0'B、si= AO*;D、i-;B、atoi(s)D、atoi(*s)(9) A、si!=,0, B、si=,O,(10) A、$um=sum*10+($')C、sum=sum*10+si(11) A. si!;C、;(12) A、 sumC、atoi(char *s)4.阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选个正确答案.【程序】#include <stdio.h>#define T(c)(c=c=c)double fl()(int x;return x=7%4;)void f2(int n)(for(;n>=l;n)printf("%2dn,n%3);printf("nM);)double f3(int n)if(n=l) return 1.0;else return n+f3(n-l);void tnain()Iprintf(n%d %dn",T(5),T(l);printf("%.lfn",n();f2(4);printf("%.lln",f3(3);【问题】(13)程序运行时,第1行输出(13)。A,10B、00 C,01D、11(14)程序运行时,第2行输出(14).A,1.0B,1C、3.0D、3(15)程序运行时,第3行输出(15)*A、021010210C、102D、1021(16)程序运行时,第4行输出(16)A、1.0B,10.0C、3.0D、6.05 .阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选个!E确答案。【程序】程序1include <stdio.h>void mainO(int ij,n=5;for(i=2;i<=n;i+)for(j=ly<=ij+)printf("%d "3);putcharCXnj;I 程序2#include <stdio.h>void mainO(char str8O;int i;gets(str);for(i=0;stri!='0'i+)if(stri<='Z'&& stri>='A')stri='a'+'Z'-stri;puts(str);【问题】(17)程序1运行时,第1行输出(17).A,1B,4444C、22D、333(18)程序1运行时,第2行输出(18).A,1B、4444C、22D、333(19)程序2运行时,输入YEAR,输出(19)。A、yearB, BVZIC, bvziD, YEAR(20)程序2运行时,输入sz,输出(20)-A、HagB, UO2TC、FLAGD、uozt6 .阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选个正确答案。【程序】#include <stdio.h>void main()(inti J;char *s4="apple","fruit","berry","orange");for(i=0;i<4;i+)for(j=lj<=iy-H-)printf("%sn",si+j);)【问题】(21)程序运行时,第1行输出(21)»A、appleB、ruitC、(ruitD、pple(22)程序运行时,第2行输出(22)。A, rryB、erryC, ruitD、uil(23)程序运行时,第3行输出(23).A、rryB、angeC、uitD、pie(24)程序运行时,第4行输出(24)。A, rangeB、geC、ryD, ange:、程序编写(每题14分,共28分)1 .输入100个整数,将它们存入数组成a中,再输入个整数x,统计并输出数组a中不小于x的元素个数.2 .按下面要求编写程序:(1)定义函数f(n)计算n*(n+l)*(2n-l),函数返回值类型是double。(2)定义函数tnain()«输入正定义n(计算并定出下列算式的值。要求调用函数f(n)计算 n*(n+l)*-*(2n-l).I +2*3 3*4*5«(?! + 1) (2n - 1)201I年下半年浙江省高等学校计算机等级考试二级C程序设计试卷说明:本试卷共6贝,满分100分:考试时间为90分钟;考生应将所有试题的答案壊写在答卷匕程序阅读与壊空全部把选择题,请在答卷上的各小题选项的对应位置上壊、W”.、程序阅读与填空(24小题,每小题3分,共72分)1 .阅读下列程序说明和程序,在每小题提供的若干可选答案屮,挑选个正确答案【程序说明】输入批核数(以零或负数为结朿标志),求奇数和.运行示例:Enter integers:9361031-1sum «43【程序】include <stdio.h>main()( int x, odd;printf (Z/Enter integers:;odd «0;scanf("*d",&x);while ()(iff )odd = odd+ x;(3);printf(sum %d ”,(4);【供选择的答案】(1) A、x >0B. x >«0C. x !«0D、 x0(2) A、 x%2!»0B、 x%20C、 x/2=0D> x !-2(3) A、scanf (r/%d",&x)B、 scanf("%d",jc)C. x !=0D、 x = odd(4) A、sumB、oddC、xD、 integers2 .阅读下列程序说明和程序,在每小题提供的若干可选答案屮,挑选个正确答案【程序说明】输入个正整数n,找出其中最小的数字,用该数字组成一个新数,新数的位数与原数相同运行示例:Enter an integer:2187The new integer:1111【程序】#include <stdio.h>main () int count 0, i, mindig, n, new «0;min digprintf("Enter integers:;scanf("%d",&n);do if (n%10< min_dig) min dig , n%10;(6);count+; while(n !«0);for ( i-0;(2); i+)new -(8);printf(MThe new integer:%dnn, new);【供选择的答案】(5) A、0C、9D、-1(6)A、 n min digB、 n , n%10C、n-D% n - n/10(7) A、 i <« countC、iD、 i < count(8) A、 new + min_digB、new+ min_dig * 10C、 new * 10 + min_digD、 min_dig3.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选个正确答案【程序说明】输入个以回车结朿的字符串(少于80个字符),判断该字符串中是否包含“Hell。”.要求定义和调用函数in该函数判断字符串s中始否包含字符串t,若满足条件则返回!(否则返回0.运行示例: Enter a string: Hello world!"Hell。 world!" includes "Hello"【程序】include <stdio.h> int in (char *s, char *t) int i, j, k;for( i-0; si!-r0r; i+)(9)if ( si- tj) for(k-i; tj!-"、0"; k+, j+) if (10) break;if (tj-'、,)(11);) return 0;) main () char s80;printf("Enter a string:"); gets (s); if(12)printf (、"s" includes "Hello"n"z s); elseprintf (''"%s" doesn,t inc