2011-2012年度第一学期“C语言程序设计”期末考试复习提纲一、考试题型序号题型每题得分题量总分一选择题21530二填空2510三程序阅读4520四编程题1011015230二、题例:(一)项目二数据类型、运算符和表达式选择题:1.不合法的C语言整型常量是A。A.–012B.0x35C.123LD.8E22.不合法的C语言实型常量是A。A.E3B..123C.–6.2E4D.5.03.不合法的C字符常量是C。A.’2’B.’\101’C.’AB’D.’\n’4.下列四组选项中,均是不合法的用户标识符的选项是B。A.WP_0doB.b-agotointC.floatla0_AD.-123abcTEMP5.下列四组选项中,均是合法转义字符的选项是A。A.’\”’’\\’’\n’B.’\’’\017’’\”’C.’\018’’\f’’xab’D.’\\0’’\101’’xlf’6.定义三个变量a、b、c,并分别赋初值为5。能实现该功能的语句是C。A.inta=b=c=5;B.inta,b,c=5;C.inta=5,b=5,c=5;D.inta=5;b=5;c=5;7.若x,y,t均为int类型,则执行语句x=y=3;t=++x||++y;后,y的值是D。A.不定值B.4C.1D.38.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为C。x=(i=4,j=16,k=32)A.4B.16C.32D.529.设有说明:charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为D。A.floatB.charC.intD.double10.设以下变量均为int类型,则值不等于7的表达式是C。A.(x=y=6,x+y,x+1)B.(x=y=6,x+y,y+1)C.(x=6,x+1,y=6,x+y)D.(y=6,y+1,x=y,x+1)填空题:1.若有定义intm=5,y=2;,则计算表达式y+=y-=m*=y后的y值是-16。2.若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值为1。3.若a是int型变量,则表达式(a=4*5,a*2),a+6的值为26。4.若x和a均是int型变量,则计算表达式x=(a=4,6*2)后的x值为12,计算表达式x=a=4,6*2后的x值为4。5.若a是int型变量,则计算表达式a=25/3%3后a的值为2。6.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为10,n的值为6。7.若有定义:charc=‘\010’;则变量c中包含的字符个数为1。8.若有定义:intx=3,y=2;floata=2.5,b=3.5;则下面表达式的值为1。(x+y)%2+(int)a/(int)b9.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-’3’的值为102。阅读题:(写出程序运行结果)1.#includestdio.hmain(){intx=97;chary=’b’;printf(“%c,%d”,x,y);}答:a,982.#includestdio.hmain(){intx=6;x+=x-=x*x;printf(“x=%d\n”,x);}答:x=﹣603.#includestdio.hmain(){intx;(x=4*5,x*5),x+25;printf(“x=%d\n”,x);}答:x=204.#includestdio.hmain(){inti=1,j;j=-i++;printf(“%d\n”,j);}答:﹣1编程题:(顺序结构编程)1.输入华氏温度,输出摄氏温度。C=5/9*(F-32)#includestdio.hmain(){floatC,F;printf(请输入华氏温度F:);scanf(%f,&F);C=5.0/9*(F-32);printf(%.2f℉=%.2f℃\n,F,C);}2.输入底面半径r和高度h,计算并输出圆柱体的体积v。v=πr2h(π取3.14,v计算结果保留到小数点后两位)#includestdio.h#definePI3.14main(){floatr,h,V;printf(请输入底面半径r和高度h:);scanf(%f%f,&r,&h);V=PI*r*r*h;printf(圆柱体的体积V=%.2f\n,V);}3.从键盘输入一扇形的半径和角度,求扇形的面积和周长。#includestdio.h#definePI3.14main(){floatr,n,S,C;printf(请输入扇形的半径r和角度n:);scanf(%f%f,&r,&n);S=(n*PI*r*r)/360;C=(n*PI*r)/180+2*r;hrprintf(扇形的面积S=%.2f,周长C=%.2f\n,S,C);}4.从键盘输入学生的三门考试成绩,计算并输出平均成绩。#includestdio.hmain(){floata,b,c,avg;printf(请输入学生三门考试的成绩:);scanf(%f%f%f,&a,&b,&c);avg=(a+b+c)/3;/*求平均成绩*/printf(平均成绩为:%.2f\n,avg);}(二)项目三C语言程序控制结构选择题:1.下列for循环的循环次数是D。inti=0,j;for(j=10;i=j=10;i++,j--)printf(”ok”);A.0次B.1次C.10次D.无限次2.下列for循环的循环次数是B。inti=0,j=0;for(;!j&&i=5;i++)j++;A.5次B.1次C.无限D.6次3.语句for(i=0,j=0;i=100;i++)j=j+i;运行后j的值为D。A.500B.100C.5000D.50504、有以下程序:#includestdio.hmain(){charc;while((c=getchar())!='?')putchar(--c);}程序运行时,如果从键盘输入:Y?N?回车,则输出结果为D。A.YB.XYC.YXD.X5.下面的程序段执行时,若从键盘输入5,则输出为D。inta;scanf(”%d”,&a);if(a-->5)printf(”%d\n”,a++);elseprintf(”%d\n”,a);A.7B.6C.5D.46.若inta=5;则执行下列语句后打印的结果为A。do{printf(“%2d\n”,a--);}while(!a);A.5B.不打印任何结果C.4D.陷入死循环7.语句for(i=0,j=0;i=100;i++)j=j+i;运行后j的值为D。A.500B.100C.5000D.50508.下面程序段的运行结果是C。intn=0;while(n++=2);printf(“%d”,n);A.2B.3C.4D.有语法错误9.若i为整型变量,则以下循环执行次数是B。for(i=2;i==0;)printf(“%d”,i--);A.无限次B.0次C.1次D.2次10.执行语句for(i=1;i++4;);后变量i的值是C。和第八题相似A.3B.4C.5D.不定填空题:1、若输入字符串:abcdef回车,则以下while循环体将执行____0____次。While((ch=getchar())==’d’)printf(“**”);2、下面程序段的运行结果是___a=-5______。i=1;a=0;s=1;do{a=a+s*i;s=-s;i++;}while(i=10);printf(“a=%d”,a);3.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填空。intn=0,c;c=getchar();while(c!=’\n’){if(c=’0’&&c=’9’)n++;c=getchar();}4.以下程序中,while语句的循环次数是无限次。#includestdio.hmain(){inti=0;while(i10){if(i1)continue;if(i==5)break;i++;}printf(“%d”,i);}5.下面程序的功能是用“辗转相除法”求两个正整数的最大公约数。请填空。#includestdio.hmain(){intr,m,n;scanf(“%d%d”,&m,&n);if(mn)___{r=m;m=n;n=r}___;r=m%n;while(r){m=n;n=r;r=__m%n__;}printf(“%d\n”,n);}6.执行以下程序后,输出“#”的个数是___6____。#includestdio.hmain(){inti,j;for(i=1;i5;i++)for(j=2;j=i;j++)putchar(‘#’);}阅读题:(写出程序运行结果)1.#includestdio.hmain(){inty=10;do{y--;}while(--y);printf(“%d\n”,y--);}答:02.#includestdio.hmain(){intx=15;while(x10&&x50){x++;if(x/3){x++;break;}elsecontinue;}printf(“%d\n”,x);}答:173.#includestdio.hmain(){inta=1,b=0;for(;a3;a++)switch(a++){case1:b--;break;case2:b++;case3:b+=3;}printf(“%d\n”,b);}答:﹣14.#includestdio.hmain(){ints,i;for(s=0,i=1;i3;i++,s+=i);printf(“%d\n”,s);}答:5编程题:1.计算s=1+1/2+1/3+……+1/n#includestdio.hmain(){inti,n;floats;scanf(%d,&n);for(s=0.0,i=1;i=n;i++)s=s+1.0/(i);printf(s=%f\n,s);}2.求和:从1加到100#includestdio.hmain(){intn,s;for(s=0,n=1;n=100;n++)s=s+n;printf(s=%d\n,s);}3.如果0n17,使之能正确地计算n!#includestdio.hmain(){intn,i;longs;printf(请输入整数n:);scanf(%d,&n);if(n0&&n17){for(i=2,s=1;i=n;i++)s=s*i;printf(%d!=%d\n,n,s);}elseprintf(输入错误!请输入1-16中的整数!\n);}4.如果0〈n8,请计算s=1!+2!+3!+……+n!,并打印输出计算结果s。(注:n!=1*2*3*……*n)#includestdio.hmain(){intn,i,s,fact;printf(请输入整数n:);scanf(%d,&n);if(n0&&n8){for(i=1,s=0,fact=1;i=n;i++){fact=fact*i;/*求n!*/s=s+fact;/*求s=1!+2!+3!+……+n!*/}printf(s=%d\n,s);}elseprintf(输入错误,请输入1-7中的整数!\n);}5.从键盘输入一个大于1的整数,输入是否为素数,是,则输出“YES”,否则输出“NO”#includestdio.hmain(){intn,i;printf(请输入整数n:);scanf(%d,&n);if(n1){for(i=2;in;i++)if(n%i==0)break;if(i==n)printf(YES\n);elseprintf(NO\n);}elseprintf(输入错误,请输入大于1的整数!\n);}(三)项目四数组选择题:1.若二维数组a有m列,则在a[i][j]前的元素个数为____B