C语言题 答案
一、选择题1.该程序的输出结果是多少?(单选)m=37;n=13;while(m!=n){while(m>n)m=m-n;while(n>m)n-=m;}printf("m=%dn",m);输出结果为:A.m=13B.m=11C.m=1D.m=22.该程序的输出结果是多少?(单选)for(i=0;i<5;i++){for(j=1;j<10;j++)if(j==5)break;if(i<2)continue;if(i>2)break;printf("%d,",j);}printf("%dn",i);输出结果为:A.10,3B.5,2C.5,3D.10,23.该程序的输出结果是什么?(单选)#include
voidmain(){intn;n=0;while(n<8){switch(n%3){case2:putchar('2');case1:putchar('i');break;case0:nputchar('H');}n++;}}A.Hi2Hi2HiB.Hi2C.Hi2iHi2iD.Hi2iHi2iHi4.该程序的输出结果是多少?(单选)#includemain(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}}printf("x=%dn",x);}A.x=4B.x=8C.x=6D.x=125.若k为整型,以下while循环执行___次.(单选)k=2;while(k=0)printf("%d",k),k--;printf("n");A.无限次B.0次C.1次D.2次6.下面这个程序的输出是什么?(单选)#includemain(){inty=10;while(y--);printf("y=%dn",y);}A.y=0B.while构成死循环C.y=1D.y=-17.圆周率pi的近似率可用下面的公式求得:pi*pi/6约等于1/(1*1)+1/(2*2)+...+1/(n*n)由以上公式可知,若n取值10000,则最后一项的值为1E-4,认为可达到精度要求。以下程序用来求pi的近似值。请填空。(其中函数sqrt(a)用于求a的平方根)(单选)#includen#includemain(){longi;floatpi;pi=0.0;for(i=1;i<=10000;i++)pi+=___;pi=sqrt(6.0*pi);printf("pi=%10.6lfn",pi);}A.1/i*iB.1/(i*i)C.1.0/i*iD.1.0/(i*i)8.下面这个程序执行后i和s的值为多少?(单选)#includevoidmain(){inti,s;i=0;s=0;while(i<10);{s+=(i++);printf("%dn",s);}printf("i=%dn",i);}A.i值为9,s值为45B.i值为10,s值为45C.i值为10,s值为36D.程序陷入了死循环9.设有程序段intk=10;while(k=0)k=k—1;则下面描述中正确的是A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次10.下面程序段的运行结果是:x=y=0;while(x<15)y++,x+=++y;printf("%d,%d",y,x);A.20,7B.6,12c)20,8D.8,2011.下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空:#indudemain(){inta,b,t;scanf("%d%d",&a,&b);while(________)n{if(a>b){t=a;a=b;b=t;}printf("%d,%d",a,b);scanf("%d%d",&a,&b);}}A.!a=bB.a!=bC.a==bD.a=b12.下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空:#indude"stdio.h"main(){intm=0,n=0;charc;1while((_____)!='n'){if(c>='A'&&C<='Z')m++;if(c>='a'&&c<='z')n++;}printf("%dn",m='a'&&c<='z')c-=30;if(c>'z'&&c<='z'+2)_________;}printf("%c",c)}A.c='B'B.c='A'C.c-=26D.c=c+2614.下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。#includemain(){inta,max=0;scanf("%d",&a)while(_____){if(max(CR)表示回车),则下面程序的运行结果是:#includemain(){charc;intv0=0.v1=0,v2=0;do{switch(c=getchar()){case'a':case'A':case'e':case'E':case'i':case'I':case'o':case'O':case'u':case'U':v1+=1;default:v0+=1;v2+=1;};}while(c!='n');printf("v0=%d,v1=%d,v2=%dn",v0,v1,v2);}A.v0=7,v1=4,v2=7B.v0=8,v1=4,v2=8C.v0=11,v1=4,v2=11D.v0=12,vl=4,v2=1216.以下for循环的执行次数是:for(x=0,y=0;(y=123)&&(x<4);x++);A.是无限循环B.循环次数不定C.执行4次D.执行3次17.下面程序段的运行结果是:for(y=1;y<10;)y=((x=3*y,x+1),x-1);printf("x=%d,y=%d",x,y);A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=2718.下面程序的功能是计算:至50中是7的倍数的数值之和,请选择填空。#include·main(){inti,sum=0;for(i=1;i<=50;i++)if([1])sum+=i;printf("%d",sum);}A.(int)(i/7)==i/7B.(int)i/7==i/7C.i%7=0D.i%7==019.下面程序的运行结果是:#includemain(){inti,b,k=0;for(i=1;i<=5;i++){b=i%2;while(b-->=0)k++;n}printf("%d,%d",k,b);}A.3,-1B)8,-1C.3,0D.8,-220.以下正确的描述是。A.continue语句的作用是结束整个循环的执行B.只能在循环体内和switch语句体内使用break语句C.在循环体内使用break语句或continue语句的作用相同D.从多层循环嵌套中退出时,只能使用goto语句21.下面程序段:for(t=1;t<=100;t++){scanf("%d",&x);if(x<0)continue;printf("%3d",t);}A.当x<0时整个循环结束B.x>=0时什么也不输出C.printf函数永远也不执行D.最多允许输出100个非负整数22.与下面程序段等价的是:for(n=100;n<=200;n++){if(n%3==0)continue;printf("%4d",n);}A.for(n=100;(n%3)&&n<=200;n++)printf("%4d",n);B.for(n=100;(n%3)||n<=200;n++)printf("%4d",n);C.for(n=100;n<=200;n++)if(n%3!=0)printf("%4d",n)D.for(n=100;n<=200;n++){if(n%3)printf("%4d",n);elsecontinue;break;}23.下面程序的运行结果是:#include"stdio.h"main(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("#");}A.*#*#$B.*#*#*##C.*#*#$D.#*#*$24.下面程序的运行结果是:nmain(){inti,j,a=0;for(i=0;i<2;i++){for(j=0;j<=4;j++){if(j%2)break;a++;}a++;}printf("%dn",a);}A.4B.5C.6D.7三、补充程序1、依据公式∏2/6≈1/12+1/22+…+1/n2求∏值。#includemain(){longI,n;doubles=0.0;scanf(“%ld”,&n);for(I=1;I<=n;I++)s=s+_________①____;printf(“pai=%fn”,_______②__);}2、已知程序段:s=1.0;for(k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf(“%fn”,s);补充程序使之与上程序段功能相同s=0.0;________①___________;k=0;do{s=s+d;_________②__________;d=1.0/(k*(k+1));}while(_______③________);printf(“%fn”,s);3、程序功能为键入若干学生成绩统计最高分与最低分,当输入负数时结束输入。main(){floatx,max,min;scanf(“%f”,&x);max=x;min=x;while(________①______){if(x>max)max=x;nif(________②______)min=x;scanf(“%f”,&x);}printf(“max=%f,min=%fn”,max,min);}4、求20以内3的倍数的和sum1及其余数的和sum2。mian(){intsum1=0,sum2=0,i;for(i=1;_______;i++)if(________)sum1+=i;elsesum2+=i;printf(“%d,%dn”,sum1,sum2);}5、输出fibnacci数列的前20项。main(){intf1=1,f2=1,I,n=0;for(i=1;i<=10;i++){printf(“%12d%12d”,f1,f2);f1=f1+f2;___________;if(i%2==0)printf(“n”);}}6.以下程序从读入的整数数据中,统计大于零的整数个数和小于零的整数个数.用输入零来结束输入,程序中用变量i统计大于零的整数个数,用变量j统计小于零的整数个数.请填空.#includemain(){___n,i,j;printf("输入非零的整数(输入零结束程序)");i=j=0;scanf("%d",&n);while___{if(n>0)i=___;if(n<0)j=___;___;}printf("i=%4dj=%4dn",i,j);n}7.斐波哪契数列中的头两个数是0和1,从第三个数开始,每个数等于前两个数的和,即:0,1,1,2,3,5,8,13,21,...等。下面这个程序就是求斐波哪契数列的前20个数。请填空。#includevoidmain(){intf,f1,f2,i;f1=0;f2=___;printf("%dn%dn",f1,f2);for(i=3;i<=30;___){f=___;printf("%dn",f);f1=f2;f2=___;}}8.下面这个程序打印出以下这个三角形.请填空。0112223333444445555556666666777777778888888889999999999voidmain(){inti,j;for(i=0;i<=___;i++){for(j=0;j<=___;j++)printf(___);___}}9.读懂下面的程序并填空。#includevoidmain(){nlonga,b,r;scanf("%ld",&a);b=0;do{r=a%10;a=a/10;b=b*10+r;}while(a);printf("%ld",b);}程序运行时如果输入37,输出为___。程序运行时如果输入-345,输出为___。程序运行时如果输入10239,输出为___。10.请改正下面这个远程序的错误:#includemain(){inti,j,list(10);for(i=0,i<10,i++){list[i]=2*i+3;for(j=9,j>=0,j--)printf("%dn",list[j]);}}11.下面这个程序的作用是统计公元1年到公元2000年的闰年个数。判断闰年的方法是:能被400整除的年是闰年;除能被400整除的年以外,凡是能被4整除,但不能被100整除的年是闰年。其余年份是平年。请填空。#includevoidmain(){intyear;intcount=0;for(year=0;year<=2000;year++)if((_____)||(year%4==0&&____))____;printf("%d",count);}12.读懂程序并填空。#includevoidmain(){intdigit_num=0;intletter_num=0;nintother_num=0;charch;while(1){ch=getchar();if(ch=='!')break;if(ch>='0'&&ch<='9')digit_num++;elseif((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))letter_num++;elseother_num++;}printf("Thenumberofdigitis%dn",digit_num);printf("Thenumberofletteris%dn",letter_num);printf("Thenumberofotheris%dn",other_num);}程序运行时如果输入:123adfhd^%234FDG%34%hJK+!_AAAD!<回车>最后,变量digit_num的值为___,变量letter_num的值为___,变量other_num的值为___。13.除1外,只能被1和自己本身整除的自然数叫素数。下面这个程序就是求2到100之间的素数。其中判断某数为素数的方法为用2到该数平方根之间的自然数去试整除该数。如果没有哪个数能够整除该数,那么该数为素数;如果有,那么时合数。请填空。(函数sqrt(a)求a的平方根)#include#includevoidmain(){inti,j,k;intflag;for(i=2;i<=___;i++){flag=1;k=(int)sqrt(i);for(j=2;j<___;j++)if(___==0){flag=0;break;}nif(flag)printf("%dn",i);}}三、编程题1、求1+2+3+…+100的和。2、求1!+2!+…+10!3、求1+3+5+…+99的和。4、打印如图所示的图形(利用循环语句)(1)*******(2)*************************5、任意从键盘键入10个数求其最大值与最小值。6、“猴子吃桃子问题”,猴子每天吃掉前一天的一半多一个,第10天只剩下了1个桃子,问第一天共有多少个桃子。