C语言程序设计题库(共61页).doc

上传人:飞****2 文档编号:14106721 上传时间:2022-05-02 格式:DOC 页数:61 大小:259.50KB
返回 下载 相关 举报
C语言程序设计题库(共61页).doc_第1页
第1页 / 共61页
C语言程序设计题库(共61页).doc_第2页
第2页 / 共61页
点击查看更多>>
资源描述

《C语言程序设计题库(共61页).doc》由会员分享,可在线阅读,更多相关《C语言程序设计题库(共61页).doc(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上第2章 基本语法规则第一部分:书后习题一、单项选择题(下列每小题给出4个备选答案,将其中一个正确答案填在其后的括号内)1、下列哪个是合法的C语言标识符( )A)if B)1_ab C)#ab D)CHAR答案:D2、C语言中,下列合法的长整型常量是( )A)0L B)a C)0. D)2.134e12答案:A3、字符串常量abctd376的长度是( )A)7 B)12 C)8 D)14答案:A4、设m,n,a,b,c,d的值均为0,执行(m=a=b)|(n=c=d)后,m,n的值是( )A)0,0 B)0,1 C)1,0 D)1,1答案:C5、设有定义:int a=5

2、,b; 执行下列语句后,b的值不为2的是( )A)b=a/2 B)b=6-(-a) C)b=a%2 D)b=a3?2:4答案:C6、下列运算符中,优先级最高的是( )A)=A&ch=C)?(ch+32):chA)A B)a C)Z D)z答案:B9、设有定义:int a=3,b=4,*c=&a;则下面表达式中值为0的是( )A)a-*c B)a-*b C)b-a D)*b-*a答案:A10、若有定义:int a,b,c;下列表达式中,那一个是合法的C语言赋值表达式( )A)a=7+b=c=7 B)a=b+=c=7 C)a=(b=7,c=12) D)a=3,b=a+5,c=b-2答案:C11、设

3、有定义:char a=3,b=6,c;则执行完语句c=(ab)2后,c的值为( )A)034 B)07 C)01 D)024答案:D12、若有定义:float x=1,*y=&x;则执行完语句*y=x+3/2;后,x的值为( )A)1 B)2 C)2.0 D)2.5答案:C13、设有定义:int a=3,b=4; 执行语句printf(%d,%d,(a,b) ,(b,a);的输出是( )A)3,4 B)4,3 C)3,3 D)4,4答案:B14、用语句scanf(x=%f,y=%f,&x,&y);使x,y的值均为1.25,正确的输入是( )A)1.25,1.25 B)1.251.25 C)x=

4、1.25,y=1.25 D)x=1.25y=1.25答案:C15、若有定义:int x=5,y=4; 则下列语句中错误的是( )A)while(x=y) 5; B)do x+ while(x=10);C)while(0); D)do 2; while(x=y);答案:B16、若有定义:int x,y;则循环语句for(x=0,y=0;(y!=123)|(x4);x+);的循环次数为( )A)无限次 B)不确定次 C)4次 D)3次答案:A17、若有定义:int a=1,b=10; 执行下列程序段后,b的值为( )do b-=a;a+;while(b-0);A)9 B)-2 C)-1 D)8答案

5、:D18、表达式 (int)3.6*3的值为( )A)9 B)10 C)10.8 D)18答案:A19、下面的叙述中不正确的是( )A)宏名无类型,其参数也无类型 B)宏定义不是C语句,不必在行末加分号C)宏替换只是字符替换D)宏定义命令必须写在文件开头答案:D20、 与for(;0;)等价的为( )A)while(1) B)while(0) C)break D)continue答案:B二、程序填空题(在下列程序的 处填上正确的内容,使程序完整)1、下列程序的功能是把从键盘上输入的整数取绝对值后输出。main() int x; scanf(%d,&x); if(x0) ; printf(%dn

6、,x);答案:x=-x2、本程序实现判断m是否为素数,如果是素数输出1,否则输出0。# include stdio.hmain( ) int m, i, y=1;scanf(%d,&m);for (i=2; i=m/2; i+) if ( ) y=0;break;printf(%d n,y); 答案:m%i=03、下列程序的功能是输出1100之间能被7整除的所有整数。main() int i; for(i=1;imax) max=x; if ( x=0三、程序改错题(下列每小题有一个错误,找出并改正)1、 main() int a,b; float x,y,z; scanf(%f%f%f,&x

7、,&y,&z); a=b=x+y+z; c=a+b; printf(%d%d%d,a,b,c);错误行:int a,b;改正行:int a,b,c;2、求100以内的正整数中为13的倍数的最大值。 main() int i; 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+100 main() int i=1,sum=0; do sum+=i; i+;while(i100);printf(%d,sum); 错误行: sum+=i; i+

8、;while(i100);改正行: sum+=i; i+;while(i=100);4、 计算 1+1/2+1/3+1/10 main() double t=1.0; int i; for(i=2;i=a&*ch=a&*ch=a&*ch=z)四、程序分析题1、下面程序的输出结果是main() int x=3,y=3,z=1; printf(%d %dn,(+x,y+),z+2);答案:3 32、下面程序的输出结果是main() int a=10,b=4,c=3; if(ab) a=b; if(ac) a=c; printf(%d,%d,%dn,a,b,c);答案:10,4,33、下面程序的输出

9、结果是main() int i,sum; for(i=1,sum=10;i=3;i+) sum+=i; printf(%dn,sum); 答案:164、下面程序的输出结果是main() int x=23; do printf(%d,x-); while(!x); 答案:235、下面程序的输出结果是main() int a,b; for(a=1,b=1;a20) break;if(b%3=1) b+=3; continue; b-=5; printf(%dn,b);答案:226、下面程序的输出结果是#define N 2#define M N+1#define NUM 2*M+1main() i

10、nt i; for(i=1;i=NUM;i+);i-; printf(%dn,i);答案:67、下面程序的输出结果是main() float x=2,y; if(x0) y=0; else if(x10) y=1.0/10; else y=1; printf(%.1fn,y);答案:0.18、下面程序的输出结果是main() int x=1,a=0,b=0; switch(x) case 0: b+; case 1:a+; case 2:a+;b+; printf(a=%d,b=%dn,a,b);答案:a=2,b=19、下面程序的输出结果是main() int a=2,b=-1,c=2; if

11、(ab) if(b(y)?(x):(y)main() int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf(%dn,t);答案:7五、程序设计题1、输入三个单精度数,输出其中最小值。方法一:使用if语句。main() float x,y,z,min; printf(input three real numbers:); scanf(%f%f%f,&x,&y,&z); if(xz) min=z; printf(min=%fn,min);方法二:使用条件表达式。main() float x,y,z,min; printf(input three real

12、 numbers:); scanf(%f%f%f,&x,&y,&z); min=xy?x:y; min=minz?min:z; printf(min=%fn,min);2、输入10个整数,统计并输出正数、负数和零的个数。main() int x,zs=0,fs=0,zr=0,i; printf(input 10 integers:); for(i=1;i0) zs+; else if(x=0) zr+; else fs+; printf(zs=%d fs=%d zr=%dn,zs,fs,zr);3、输入两个正整数,输出它们的最大公约数和最小公倍数。main() int a,b,maxgy,mi

13、ngb; printf(input two integers:); scanf(%d%d,&a,&b); maxgy=ab?a:b; while(mingb%a!=0|mingb%b!=0) mingb+; printf(maxgy=%d mingb=%dn,maxgy,mingb);4、求Sn=a+aa+aaa+aaa(最后一项为n个a)的值,其中a是一个数字。如:2+22+222+2222+22222(此时n=5),n的值从键盘输入。main() int a,n,i; float s=0,result=0; printf(input a(1-9):); scanf(%d,&a); prin

14、tf(input n:); scanf(%d,&n); for(i=1;i=n;i+) s=s*10+a; result+=s; printf(nresult=%fn,result);5、打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数的立方和等于该数本身。如:153=13+53+33,则153是一个水仙花数。方法一main() int i,j,k; for(i=1;i=9;i+) for(j=0;j=9;j+) for(k=0;k=9;k+) if(i*i*i+j*j*j+k*k*k=i*100+j*10+k) printf(%8d,i*100+j*10+k);方法二mai

15、n() int i,bw,sw,gw; for(i=100;i=999;i+) gw=i%10; sw=i%100/10; bw=i/100; if(bw*bw*bw+sw*sw*sw+gw*gw*gw=i) printf(%8d,i); 6、计算main() float sum=0,i; for(i=1;i=100;i+) if(i=50) sum+=1/i+1/(i*i); else sum+=1/i; printf(sum=%fn,sum); 7、编程序按下列公式计算e的值(精度要求为=1e-6) s*=i;sum+=1/s; i+; printf(sum=%fn,sum); 第二部分:

16、补充习题一、单项选择题(下列每小题给出4个备选答案,将其中一个正确答案填在其后的括号内)1、下列关于C语言标识符的叙述正确的是( )A)可以出现下划线和减号 B)不可以出现减号,但可以出现下划线C)可以出现下划线,但不可一放在用户标识符的开头D)可出现下划线和数字,它们都可以放在用户标识符的开头答案:B2、下面是合法的用户标识符的是( )A)long B)_2Test C)3Dmax D)A.dat答案:B3、已知A的ASCII码是65,a的ASCII码是97,用八进制表示的字符常量101是( )A)A B)a C)e D)非法的常量答案:A4、int a5;则执行语句a+=a*=10;后的值

17、是( )A)55 B)100 C)60 D)105答案:B5、若变量已正确定义并赋值,以下符合C语言语法规则的表达式是( )A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b答案:B6、下列表达式不正确的是( )A)a=3*5,a*2 B)17.0/15%2 C)a+=y+10 D)k+j答案:B7、执行语句组int a,b; b=(a=4*9, a*2),a-3;后,b的值是( )A)36 B)72 C)33 D)39答案:B8、若已定义了x和y为double型,则表达式x1,yx3/2的值为( )A)1 B)2 C)2.0 D)2.5答案:C9、若a和b

18、为double型常量,且a5.5,b=2.5,则表达式(int)a+b/b的值为( )A)6. B)6 C)5. D)6.答案:D10、int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后c3中的值是( )A)0 B)0.5 C)1 D)2答案:A11、以下非法的赋值语句是( )A)n=(i=2,+i); B)j+; C)+(i+1); D)x=j0;答案:C12、以下语句合法的是( )A)x=y=100 B)x=d-; C)x+=4+; D)x=int(a+b);答案:B13、int m=0,n=0; char c=a; scanf(“%d%c%d”,&m,&c,&n);

19、printf(“%d,%c,%dn”,m,c,n); 输入10A10回车,输出结果是( )A)10,A,10 B)10,a,10 C)10,a,0 D)10,A,0答案:A14、main() int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%d %d %3.1f %3.1fn”,a,c,f,x); 输出结果是( )A)1 65 1 6.5 B)1 65 1.5 6.5 C)1 65 1.0 6.5 D)2 65 1.5 6.5答案:B15、putchar()函数可以向终端输入( )A)一个字符串 B)多个字

20、符 C)一个实型变量 D)一个字符答案:D16、使用scanf()函数输入数据时,若输入数据类型与格式说明的类型不匹配时,系统将( )A)给出出错信息 B)拒绝用户输入数据C)不给出出错信息,但最终不能得到正确的输入数据D)不给出出错信息,但最终能得到正确的输入数据答案:C17、C语言中用于结构化程序设计的三种基本结构是( )A)顺序结构.选择结构.循环结构 B)if.switch.break C)for.while.do while D)if.for.continue答案:A18、下列关于单目运算符+,-的叙述中正确的是( )A)它们的运算对象可以是任何变量和常量 B)它们的运算对象可以是c

21、har型变量和int型变量,但不能是float型变量C)它们的运算对象可以是int型变量,但不能为double型变量和float型变量D)它们的运算对象可以是char型变量int型变量和float型变量答案:D19、下面不是C语言整型常量的是( )A)02 B)0 C)038 D)0Xal答案:C20、下面是合法的用户标识符的是( )A)28P B)am.h C)for D)While答案:D21、下面是合法的实型常量的是( )A)5E2.0 B)E-3 C)2E0 D)1.3E答案:C22、若char a; 将字符a赋值给变量a的正确表达式为( )A)a=”a” B)a=a C)a=”97”

22、 D)a=97答案:B23、下列合法的语句是( )A)short _a=1.1e-1; B)double b=1+5e2.5; C)long do=0xfdaL; D)float 2_and=1-e-3;答案:A24、下列语句的输出结果是( )long a=0xffff; short b=a; printf(“%d”,b);A)65535 B)65536 C)-1 D)1答案:C25、下列语句的输出结果是( )short i=65535; printf(“%d”,i);A)65535 B)0 C)-1 D)语法错答案:C26、下列不能表示整型常数的进制是( )A)二进制 B)八进制 C)十进制

23、 D)十六进制答案:A27、short a=-2; unsigned short b; unsigned long c; b=a; c=b; printf(“%d,%u”,b,c);则输出结果为( )A)65534,65534 B)2,2 C)65534,2 D)2,65534答案:D28、int a; unsigned b; unsigned long c=7000L; a=c; printf(“%d”,a);则输出结果为( )A)7000 B)4664 C)7000L D)-3840答案:A29、以下选项中可以作为C语言合法整数的是( )A)10110B B)0386 C)0Xffa D)

24、x2a2答案:C30、以下不能定义用户标识符的是( )A)scanf B)Void C)_3com D)int答案:D31、能正确表达逻辑关系a=10或a=10 or a=0|a=0&a=10|a=0答案:D32、下列为非法表达式的是( )A)a1 B)i=j=0 C)(char)(65+3) D)3.5%2/2答案:D33、C语言中运算对象必须是整型的运算符是( )A)= B)/; C)= D)=答案:A34、若变量a,i已定义,且i已正确赋值,合法的语句是( )A)a=1 B)+i; C)a=/5; D)a=int(i);答案:B35、下列语句合法的是( )A)4+c=b=0; B)a=+

25、c; C)a=2=b=6; D)a=4+;答案:B36、main() int a=1,s=0,n; scanf(%d,&n); do s+=1;a=a-2;while(a!=n);printf(%dn,s);若输出的值为2,则应从键盘给n输入的值是( )A)1 B)3 C)5 D)0答案:B37、若有如下程序段,其中s、a、b、c均为整型变量,且a、c均已赋值(c大于0),s=a; for(b=1;b6)n-; printf(%dn,n);的输出结果是( )A)987 B)876 C)8765 D)9876答案:B39、main() int i,j;for(i=0,j=1;i=j+1;i+=2

26、,j-) printf(%dn,i);的执行次数是( )A)3 B)2 C)1 D)0答案:C40、main() int i=0;while(i10) if(i1) continue; if(i=5) break; i+;则循环体循环的次数是( )A)1 B)10 C)6 D)死循环答案:D41、执行如下程序段a 的值为( )int *p,a=10,b=1;p=&a; a=*p+b;A)12 B)11 C)10 D)编译出错答案:B42、若有两条语句int a=1,b=2,*p=&a;*p=b; 则下列说法中正确的是( )A)两条语句中的“*p”含义完全相同B)语句*p=&a;和p=&a; 功

27、能完全相同C)语句*p=&a;的作用是定义指针变量p并对其初始化D)语句*p=b;是将b的值赋予变量p答案:C43、若有语句 int a, *p=&a; , 则其中的运算符&的含义是( )A)逻辑与运算 B)位与运算C)取变量地址 D)取变量值答案:C44、若有语句int a,*p=&a; , 则以下输入语句正确的是( )A)scanf(“%d”,*p); B)scanf(“%d”,a);C)scanf(“%d”,p); D)scanf(“%d”,&p);答案:C45、若有语句int a,*p=&a; *p=10; ,则以下描述正确的是( )A)以上语句中两个*运算符的功能是相同的 B)运算符

28、*比运算符&的优先级低,所以*p=&a 中先取a的地址C)运算符*比运算符&的优先级高,所以*p=&a中不先取a的地址D)以上语句中两个*运算符的功能是不相同的答案:D46、若有语句int a,*p=&a;*p=10; , 则以下表达式中结果不为10的是( )A)*p B)a C)*&a D)&* p答案:D47、若有语句int a,*p;,并希望p指向变量a,则以下语句正确的是( )A)p=a; B)p=&a; C)&p=a; D)p=*a;答案:B48、若有定义及赋值: int y,*p;p=&y;则不能表达变量y地址的表达式是( )A)*p B)&y C)p D)&*p答案:A二、程序填

29、空题(在下列程序的 处填上正确的内容,使程序完整)1、以下程序的功能是交换变量a和b的值。main() int a=4,b=8,temp;printf(“a=%d,b=%dn”,a,b); ; ; ;printf(“a=%d,b=%dn”,a,b);答案:temp=a;a=b;b=temp;2、下列程序按公式计算y的值(精度要求为=1e-6) ; i+; s=i*i+1; printf(sum=%fn,sum);答案:sum+=1/s3、以下程序的功能是从键盘上输入两个数据,并从小到大输出。main() int a,b,*pa,*pb,*p;pa=&a;pb=&b;scanf(“%d,%d”,

30、pa,pb);if( ) p=pa;pa=pb;pb=p;printf(“%d*pb4、以下程序完成循环输出26个大写字母。main () char ch;for(ch=A;ch=Z; )printf(“%c”,ch);答案:ch+5、输入10个学生的成绩,输出最低分数。main() int i;float x,min=100;for (i=0;i10;i+) scanf(“%f”,&x);if(xmin) ;printf(“min=%f”,min);答案:min=x三、程序改错题(下列每小题有一个错误,找出并改正)1、以下程序完成输入a,b后,输出一元一次方程ax+b=0的解。main ()

31、 float a,b,x;scanf(“%f%f”,a,b);x=-b/a;printf(“x=%fn”,x);错误行:scanf(“%f%f”,a,b);改正行:scanf(“%f%f”,&a,&b);2、以下程序完成1100中偶数的平方和。main () long s=0,i;for(i=1;i=100;i+)if(i%2=0) s+=i*i;printf(“s=%ldn”,s);错误行:if(i%2=0) s+=i*i;改正行:if(i%2=0) s+=i*i;3、以下程序功能是求1100的和。main() int i,sum=0;i=1;while(i=100)sum=sum+i;i+

32、;printf(“sum=%dn”,sum);错误行:sum=sum+i;i+;改正行:um=sum+i;i+;4、 以下程序功能是输入一个数,计算它是一个几位数。main() int x,n;printf(“input x=”);scanf(“%d”,&x);do n+;x/=10;while(x!=0);printf(“output n=%dn”,n);错误行:int x,n;改正行:int x,n=0;5、以下程序有错误的地方是:main() float x=3.14; int k; k=int(x); printf(k=%d n,k); printf(x=%fn,x); 错误行:k=int(x);改正行:k=(int)(x);四、程序分析题1、以下程序的运行结果是main() int a=1,b=0; for(;a3;a+) switch(a+) case 1:b-;break; case 2;b+; case 3:b+=3;printf(“%d”,b);答案: -12、以下程序的运行结果是main() int x,i;for(x=0,i=0;i=5;i+)if(i%5) x+;break;else continue;x-;printf(“%d”,x);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁