您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 11.12C语言程序设计题库
第2章基本语法规则第一部分:书后习题一、单项选择题(下列每小题给出4个备选答案,将其中一个正确答案填在其后的括号内)1、下列哪个是合法的C语言标识符()A)ifB)1_abC)#abD)CHAR答案:D2、C语言中,下列合法的长整型常量是()A)0LB)’a’C)0.012345D)2.134e12答案:A3、字符串常量ab\\c\td\376的长度是()A)7B)12C)8D)14答案:A4、设m,n,a,b,c,d的值均为0,执行(m=a==b)||(n=c==d)后,m,n的值是()A)0,0B)0,1C)1,0D)1,1答案:C5、设有定义:inta=5,b;执行下列语句后,b的值不为2的是()A)b=a/2B)b=6-(--a)C)b=a%2D)b=a3?2:4答案:C6、下列运算符中,优先级最高的是()A)=B)=C)%D)&&答案:C7、设有定义:intx,a,b;则执行完语句x=(a=3,b=a--);后,x,a,b的值依次是()A)3,3,2B)3,2,2C)3,2,3D)2,3,2答案:C8、若有定义:charch=’A’;则下列表达式的值是()ch=(ch=’A’&&ch=’C’)?(ch+32):chA)AB)aC)ZD)z答案:B9、设有定义:inta=3,b=4,*c=&a;则下面表达式中值为0的是()A)a-*cB)a-*bC)b-aD)*b-*a答案:A10、若有定义:inta,b,c;下列表达式中,那一个是合法的C语言赋值表达式()A)a=7+b=c=7B)a=b++=c=7C)a=(b=7,c=12)D)a=3,b=a+5,c=b-2答案:C11、设有定义:chara=3,b=6,c;则执行完语句c=(a^b)2后,c的值为()A)034B)07C)01D)024答案:D12、若有定义:floatx=1,*y=&x;则执行完语句*y=x+3/2;后,x的值为()A)1B)2C)2.0D)2.5答案:C13、设有定义:inta=3,b=4;执行语句printf(%d,%d,(a,b),(b,a));的输出是()A)3,4B)4,3C)3,3D)4,4答案:B14、用语句scanf(x=%f,y=%f,&x,&y);使x,y的值均为1.25,正确的输入是()A)1.25,1.25B)1.25□1.25C)x=1.25,y=1.25D)x=1.25□y=1.25答案:C15、若有定义:intx=5,y=4;则下列语句中错误的是()A)while(x=y)5;B)dox++while(x==10);C)while(0);D)do2;while(x==y);答案:B16、若有定义:intx,y;则循环语句for(x=0,y=0;(y!=123)||(x4);x++);的循环次数为()A)无限次B)不确定次C)4次D)3次答案:A17、若有定义:inta=1,b=10;执行下列程序段后,b的值为()do{b-=a;a++;}while(b--0);A)9B)-2C)-1D)8答案:D18、表达式(int)3.6*3的值为()A)9B)10C)10.8D)18答案:A19、下面的叙述中不正确的是()A)宏名无类型,其参数也无类型B)宏定义不是C语句,不必在行末加分号C)宏替换只是字符替换D)宏定义命令必须写在文件开头答案:D20、与for(;0;)等价的为()A)while(1)B)while(0)C)breakD)continue答案:B二、程序填空题(在下列程序的处填上正确的内容,使程序完整)1、下列程序的功能是把从键盘上输入的整数取绝对值后输出。main(){intx;scanf(%d,&x);if(x0);printf(%d\n,x);}答案:x=-x2、本程序实现判断m是否为素数,如果是素数输出1,否则输出0。#includestdio.hmain(){intm,i,y=1;scanf(%d,&m);for(i=2;i=m/2;i++)if(){y=0;break;}printf(%d\n,y);}答案:m%i==03、下列程序的功能是输出1~100之间能被7整除的所有整数。main(){inti;for(i=1;i=100;i++){if(i%7);printf(%d,i);}}答案:continue4、输入若干字符数据,分别统计其中A,B,C的个数。#includestdio.hmain(){charc;intk1=0,k2=0,k3=0;while((c=getchar())!=’\n’){{case’A’:k1++;break;case’B’:k2++;break;case’C’:k3++;break;}}printf(A=%d,B=%d,C=%d\n,k1,k2,k3);}答案:switch(c)5、下面程序的功能是:从键盘输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。main(){floatx,max,min;scanf(%f,&x);max=x;min=x;while(________________){if(xmax)max=x;if(xmin)min=x;scanf(%f,&x);}printf(max=%fmin=%f,max,min);}答案:x=0三、程序改错题(下列每小题有一个错误,找出并改正)1、main(){inta,b;floatx,y,z;scanf(%f%f%f,&x,&y,&z);a=b=x+y+z;c=a+b;printf(%d%d%d,a,b,c);}错误行:inta,b;改正行:inta,b,c;2、求100以内的正整数中为13的倍数的最大值。main(){inti;for(i=100;i=0;i--);if(i%13==0)break;printf(%d,i);}错误行:for(i=100;i=0;i--);改正行:for(i=100;i=0;i--)3、求1+2+3+…+100main(){inti=1,sum=0;do{sum+=i;i++;}while(i100);printf(%d,sum);}错误行:{sum+=i;i++;}while(i100);改正行:{sum+=i;i++;}while(i=100);4、计算1+1/2+1/3+…+1/10main(){doublet=1.0;inti;for(i=2;i=10;i++)t+=1/i;printf(t=%f\n,t);}错误行:t+=1/i;改正行:t+=1.0/i;(或t+=1/(double)i;)5、把从键盘输入的小写字母变成大写字母并输出。#includestdio.hmain(){charc,*ch=&c;while((c=getchar())!=’\n’){if(*ch=’a’&*ch=’z’)putchar(*ch-’a’+’A’);elseputchar(*ch);}}错误行:if(*ch=’a’&*ch=’z’)改正行:if(*ch=’a’&&*ch=’z’)四、程序分析题1、下面程序的输出结果是main(){intx=3,y=3,z=1;printf(%d%d\n,(++x,y++),z+2);}答案:332、下面程序的输出结果是main(){inta=10,b=4,c=3;if(ab)a=b;if(ac)a=c;printf(%d,%d,%d\n,a,b,c);}答案:10,4,33、下面程序的输出结果是main(){inti,sum;for(i=1,sum=10;i=3;i++)sum+=i;printf(%d\n,sum);}答案:164、下面程序的输出结果是main(){intx=23;do{printf(%d,x--);}while(!x);}答案:235、下面程序的输出结果是main(){inta,b;for(a=1,b=1;a100;a++){if(b20)break;if(b%3==1){b+=3;continue;}b-=5;}printf(%d\n,b);}答案:226、下面程序的输出结果是#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i=NUM;i++);i--;printf(%d\n,i);}答案:67、下面程序的输出结果是main(){floatx=2,y;if(x0)y=0;elseif(x10)y=1.0/10;elsey=1;printf(%.1f\n,y);}答案:0.18、下面程序的输出结果是main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf(a=%d,b=%d\n,a,b);}答案:a=2,b=19、下面程序的输出结果是main(){inta=2,b=-1,c=2;if(ab)if(b0)c=0;elsec++;printf(%d\n,c);}答案:210、下面程序的输出结果是#defineMAX(x,y)(x)(y)?(x):(y)main(){inta=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(%d\n,t);}答案:7五、程序设计题1、输入三个单精度数,输出其中最小值。方法一:使用if语句。main(){floatx,y,z,min;printf(inputthreerealnumbers:);scanf(%f%f%f,&x,&y,&z);if(xy)min=x;elsemin=y;if(minz)min=z;printf(min=%f\n,min);}方法二:使用条件表达式。main(){floatx,y,z,min;printf(inputthreerealnumbers:);scanf(%f%f%f,&x,&y,&z);min=xy?x:y;min=minz?min:z;printf(min=%f\n,min);}2、输入10个整数,统计并输出正数、负数和零的个数。main(){intx,zs=0,fs=0,zr=0,i;printf(input10integers:);for(i=1;i=10;i++){scanf(%d,&x);if(x0)zs++;elseif(x==0)zr++;elsefs++;}printf(zs=%dfs=%dzr=%d\n,zs,fs,zr);}3、输入两个正整数,输出它们的最大公约数和最小公倍数。main(){inta,b,maxgy,mingb;printf(inputtwointegers:);scanf(%d%d,&a,&b);maxgy=ab?a:b;while(a%maxgy!=0||b%maxgy!=0)maxgy--;mingb=ab?a:b;while(mingb%a!=0||mingb%b!=0)mingb++;printf(maxgy=%dmingb=%d\n,maxgy,mingb);}4、求Sn=a+aa+aaa+…+aa…a(最后一项为n个a)的值,其中a是一个数字。如:2+22+222+2222+22222(此时n=5),n的值从键盘输入。main(){inta,n,i;floats=0,result=0;printf(inputa(1-9):);scanf(%d,&a);printf(inputn:);scanf(%d,&n);for(i=1;i=n;i++){s=s*10+a;result+=s;}printf(\nresult=%f\n,result);}5、打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数的立方和等于该数本身。如:153=13+53+33,则153是一个水仙花数。方法一main(){inti,j,k;for(i=1;i=9;i++)for(j=0;j=9;j++)for(k=
本文标题:11.12C语言程序设计题库
链接地址:https://www.777doc.com/doc-5444214 .html