《c语言习题汇总.doc》由会员分享,可在线阅读,更多相关《c语言习题汇总.doc(94页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章 C语言概述一、选择题1一个C程序的执行是从_。A. 本程序文件的第一个函数开始,到本程序main函数结束B. 本程序的main函数开始,到本程序main函数结束C. 本程序的main函数开始,到本程序文件最后一个函数结束D. 本程序文件的第一个函数开始,到本程序文件最后一个函数结束2以下叙述不正确的是_。A. 一个C源程序可由一个或多个函数组成B. C程序的基本组成单位是函数C. 一个C源程序必须包含一个main函数D. 在C程序中,注释说明只能位于一条语句的后面3C语言规定:在一个源程序中,main函数的位置_。A. 必须在最前面 B. 必须在最后面C. 可以在任意位置 D. 必须包
2、含在其它函数中4一个C程序是由_组成。A. 一个主程序和若干子程序 B. 函数 C. 若干过程 D. 若干子程序5C语言程序_大小写字母。A. 不区分 B.有些位置区分 C. 严格区分 D. 主函数才区分二、基本概念填空题1在C语言中,关键字都是_字母。2一个C语言源程序_一个主函数。3C语言以_为程序的基本单位。4函数体一般包括两部分:声明部分和_。5C语言源程序在执行前,必须先_。6在一个C源程序中,注释部分两侧的分界符分别为_和_。7按组合键_可使Turbo C窗口全屏化。8按一个_键,可对C源程序进行保存。9调试报错后,光标无法回到源程序处,通常按_键。10按_键可以击活Turbo C
3、的菜单。第2章 程序的灵魂算法知识点巩固习题基本概念填空题1算法必须有_个输出。2可以用_图或_图表示算法。3流程图中菱形框为_框。4选择结构又称_结构。5_、选择结构和_结构并称三大基本结构。6三大基本结构具有如下一个共同特点:只有_入口和_出口。7“自顶向下、逐步细化”的模块化设计思想是_化程序设计的保证。8C语言是一种_进行结构化程序设计的计算机语言。(填适合/不适合)9算法的有穷性是指_。10画出当型循环的流程图和N-S图;画出直到型循环的流程图和N-S图。第3章 数据类型、运算符与表达式知识点巩固习题一、选择题1C语言中的数据的基本类型包括_。A. 整型、实型、字符型和逻辑型 B.
4、整型、实型、字符型和结构体 C. 整型、实型、字符型和指针型 D. 整型、实型、字符型和枚举型2在C语言中,合法的长整型常数是_。A. 0L B. C. 0. D. 2.0e6 3以下选项中不正确的实型常量是_。A. 2.608E-7 B. 0.86e C. 70.77 D. 568e-24以下选项中正确的实型常量是_。A. 3. 14159 B. 0.32102 C. .876 D. 05char型常量在内存中存放的是_。A. ASCII代码值 B. BCD代码值 C. 内码值 D. 十进制代码值 6下列数据中属于“字符串常量”的是_。A. ABC B. ABC C. abc D. a7TU
5、RBO C中int类型变量所占字节数是_。A. 1 B. 2 C. 3 D. 48n 在内存中占用的字节数是_。A. 1 B. 2 C. 3 D. 49字符串ABC在内存中占用的字节数是_。A. 3 B. 4 C. 6 D. 810若有以下定义:char a; int b; float c; double d;则表达式a*b+d-c值的类型为_。A. float B. int C. char D. double11将2009.168写成指数形式,其规范化指数形式是_。A. 200.9168e1 B. 20.09168e2 C. 0.e4 D. 2.e312下面实型数中,表示单精度实型数的是_。
6、A. 2009.02 B. 2009.02f C. 2.00902e3 D. 0.e413执行语句“x=(a=3, b=a-);”后,x、a、b的值依次为_。A. 3,3,2 B. 3,2,2 C. 3,2,3 D. 2,3,214若已定义x和y为double类型,则表达式“x=1,y=x+3/2”的值是_。A.1 B. 2 C. 2.0 D. 2.515下列表达式中符合C语言语法的赋值表达式是_。A.a=7+b+c=a+7 B. a=7+b+=a+7 C. a=(7+b,b+,a+7) D. a=7+b,c=a+716以下选项中不合法的用户标识符是_。A.PRINTF B. Main C.
7、fOR D. abc.d17C语言中运算对象必须是整型的运算符是_。A. % B. / C. = D. +18以下叙述中正确的是_。A. 在C程序中无论是整数还是实数,只要在允许范围内都能准确无误的表示 B. 在C程序中只要整数在允许范围内都能准确无误的表示 C. 在C程序中只要实数在允许范围内都能准确无误的表示 D. 在C程序中无论是整数还是实数,都无法准确无误的表示19不合法的八进制数是_。A. 0 B.077 C. 028 D.0120不合法的十六进制数是_。A. 0Xabc B.0x11 C. 0x19 D.oxff21下列不正确的转义字符是_。A. 065 B. ” C. D. 02
8、2*设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,123*设a为5,执行下列语句后,b的值不为2的是_。 A. b=a/2 B. b=6-(-a) C. b=a%2 D. b=a3?2:224*表示关系XYZ的C语言表达式为_。A. (X=Y)&(Y=Z) B. (X=Y)AND(Y=Z) C. (X=Y=Z) D. (X=Y)&(Yb)&(n=cd);后,m、n的值分别为_。A.1,1 B.1,0 C.0,1 D.0,026*设a=1,b=2,c=3,d=4,则表达式:ab?a:cd?a:d的结果为
9、_。A. 4 B. 3 C. 2 D. 127*int x,y,z,m=10,n=5; 执行下面三个语句:x=(-m=n+)?-m:+n;y=m+; z=n;则x,y,z的值分别为_。 .7,9,7 B.5,9,7 C.6,11,5 D.10,11,1028*表达式“7=7”的值是_。 A. true B. 非零值 C. 0 D. 129*设a,b,c都是int型变量,且a=3,b=4,c=5,则下面的表达式中值为0的是_。A. a& b B. a=b C. a|b+c&b-c D. !(az)?x+2:x-2,3,2”后x的值为_。6把a1、a2定义成单精度实型变量,并赋初值1的定义语句是_
10、。7当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)无符号整数是_、最小(十进制)无符号整数是_。它们的二进制形式分别是_、_。8*若x=5,y=10,则xy和xb的值为_,abc的值为_。12*能表述“20X30或X-100”的表达式是_。提高题一、选择题1下面不是C语言整型常量的是_。 A. 01 B. 0x1 C. 08 D.82设有语句 int a=3;,则执行了语句a+=a-=a*a;后,变量a的值是_。 A. 3 B. 0 C. 9 D. -123-11的补码是_。A.01011 B. 10100C.01011 D. 101014设整型变量i的值为3,则计算表达式i-i
11、后,表达式的值为_。A. 0 B. 1 C. 2 D. 表达式出错5若变量已正确定义并赋值,符合C语言语法的表达式是_。A. a=a+7; B. a=7+b+c,a+ C. int(12.3%4) D. a=a+7=c6以下叙述中正确的是_。A. a是实型变量,C允许进行以下赋值a=10,因此可以说,实型变量中允许存放整型值 B. 在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式。C.执行a=b后, a和b存储单元中的原有值都将被改变,a的值变为b的值,b变为0D.已有a=3,b=5。当执行了表达式a=a+b,b=a-b,a=a-b之后,已使a中的值为5,b中的值为37若a是int型变
12、量,则下列表达式的值为_。(a=3+5,a*2),a*6A. 8 B. 16 C. 48 D.不定值8设有如下定义: int i=8,k,a,b; unsigned long w=5; double x=1,y=5.2;则以下符合C语言语法的表达式是_。A. x%(-3) B. y=int(i) C. a=a*3=2 D. a+=a-=(b=4)*(a=3)9假定有以下变量定义: int k=7, x=12;则能使值为3的表达式是_。A. x%=(k%=5) B. x%=(x-k%5) C. x%=k+k%5 D. (k%=5)-(x%=k)10下列变量定义中合法的是_。 A. short a
13、=1-1e-1; B.double b=1+5e2.5; C.long do1=0xfdaL D.float 2_and=1-e-3;11当用#define A=2009; 说明后,下列叙述正确的是_。A. A是整型常数 B. A是整型变量 C. A是字符型常量D.说明有误12*int x=1,z=1,y=1,k; 执行k=x+|+y&+z;后, y的值为_。 A. 1 B.2 C.3 D.4二、基本概念填空题1若x为double型变量,请写出运算x=3.2,+x后表达式的值_和变量x的值_。2若k为int型变量且赋值11,请写出运算k+后表达式的值_和变量k 的值_。3表达式“s=10”应当
14、读作“_”。4转义字符的表示以_开头,字符101与字符_等价,空字符用_表示。5表达式(int)7.2%4的结果是_。6字符串Ilo034vexyo0u的长度为_。7表达式64.8*(1/2)的值为_。8写出以下数学式的C语言表达式_。 Cos60+8ex9表达式-b+sqrt(b*b-4.0*a*c)所对应的数学式子是_。10若x和a均是int型变量,则执行表达式(1)后的x值为_,执行表达式(2)后的x值为_。(1)x=(a=3,4*5)(2)x=a=3,4*511若有以下定义:int x=-2,y=2; 则执行表达式y+=y-=x*=y后的y值为_。12已知字母a的ASCII码为十进制数
15、97,数字字符0的ASCII码为十进制数48,则表达式a+1-1的整型值为_。13设有int x=11; 则表达式(x+*1/3)的值为_。14若有定义:int b=7; float a=2.5,c=4.7; 则下面表达式的值为_。 a+(int)(b/3*(int)(a+c)/2)%415*如果变量定义有:int a9,c8;则表达式(-a!c+)? -a:+c的值为_。16*定义int x=10,y,z; 执行y=z=x; x=y=z后,变量x的值为_。17*C语言中运算结果可以当成逻辑值使用的表达式有:_表达式、_表达式、_表达式、_表达式、_表达式和_表达式等。第4章 顺序结构程序设计
16、知识点巩固习题一、选择题1下列选项中,哪个不是C语言合法的语句: 。A. ; B. a=1 C. printf(“%d”,a); D. i+;2若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是 。A. getchar(a,b,c); B. scanf(%d%d%d,a,b,c);C. scanf(%D%D%D,&a,&b,&c); D. scanf(%d%d%d,&a,&b,&c);3若变量已正确说明为float类型,执行语句scanf(%f %f %f, &a, &b, &c);时要求给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是 。A. 10 22
17、33 B. 10.0,22.0,33.0C. 10.0 22.0 33.0 D. 10 22 334当运行以下程序时,在键盘上从第一列开始输入,则程序的输出结果是 。A. a=98,b=765,c=4321 B. a=10,b=432,c=8765C. a=98,b=765.,c=4321. D. a=98,b=765,c=4321.0#includevoid main()int a; float b,c;scanf(%2d%3f%4f ,&a,&b,&c);printf(a=%d,b=%f,c=%fn,a,b,c);5有以下程序,若想从键盘上输入数据,使变量m中的值为123,n中的值为456
18、,p中的值为789,则正确的输入是 。#include void main()int m,n,p; scanf(m=%dn=%dp=%d,&m,&n,&p); printf(%d%d%dn, m,n,p);A. m=123n=456p=789 B.m=123 n=456 p=789C. m=123,n=456,p=789 D.123 456 7896若从终端输入以下数据,要给变量C赋以283.19,则正确的输入语句是 。A. scanf(%f,c);B. scanf(%8.4f,&c); C. scanf(%6.2f,&c); D. scanf(%8f,&c);283.1900 7设a,b为字
19、符型变量,执行“scanf(“a=%c,b=%c”,&a,&b); ”后使a为A,b为B,从键盘上正确的输入是: 。A.AB B. A,B C. A,B D. a=A,b=B8以下程序运行后的输出结果是 。#include void main()int m=0256,n=256; printf(%o %on,m,n);A. 0256 0400 B. 0256 256 C. 256 400 D .400 4009以下程序运行后的输出结果是 。#includevoid main()int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5);
20、 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.510以下程序段的输出结果是 。int a=1234;printf(“%2dn”,a);A.12 B.34 C.1234 D.提示出错,无结果11int a=256; 执行语句 “printf(%x ,a); ”的结果是_。A.100 B.256 C. 0FFE D.00FF二、填空题1在C语言中,任一语句必定以字符 结束。2从键盘上输入12345678,则读下列程序的运行结果 。#include voi
21、d main ( )char c1,c2,c3,c4,c5,c6;scanf(%c%c%c%c,&c1,&c2,&c3,&c4);c5=getchar( );c6=getchar( );putchar(c1); putchar(c2);printf(%c%cn,c5,c6);3若有以下定义,请写出以下程序段中输出语句执行后的输出结果 (1)_(2)_(3)_ 。int i=-200, j=2500;printf(%d %dn,i,j); (1) printf(i=%d, j=%dn,i,j); (2) printf(i=%dn j=%dn,i,j); (3) 4以下程序段的输出结果是_。 do
22、uble a=513.;printf(a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lfn,a,a,a,a);5以下程序运行后的输出结果是 。#include void main()int a,b,c; a=25; b=025; c=0x25;printf(%d %d %dn,a,b,c);三、完善程序题1下面的程序是借助于第三个变量将a,b中的值交换。#include void main() int a,b,c; scanf(%d%d,&a,&b); printf(a=%d b=%dn,a,b);c=a; ; ; printf(a=%d b=%dn,a,b);2从键盘上输入
23、一个小写字母字符,将它转换为大写字母。#include void main() char ch;ch=getchar(); ; putchar(_ ); 3下列程序实现乘法计算器的功能。#includevoid main()float x,y,z; printf(Please input x,y); ; z=x*y; printf(x*y=%f , ); 提高题一、选择题1若a为整型变量,以下语句: a=-2L; printf(“%d”,a);则 。A. 赋值不合法 B. 输出-2 C. 输出不确定 D. 输出22以下程序的输出结果是 。A. a=%2,b=%5 B. a=2,b=5 C. a
24、=%d,b=%dD. a=%d,b=%d#includevoid main()int a=2,b=5;printf(a=%d,b=%dn,a,b);3以下程序段的输出是 。A. *496 * B. * 496* C. * D.输出格式符不合法int x=496;printf(*%-06d*n,x);4执行语句printf(“The string is: c:toolsbook.txt”);后的输出是 。A. The string is: c:toolsbook.txt B. The string is: c:tools book.txtC. The string is: c:toolsbook
25、.txt D. The string is: c:toolsbook.txt5若有定义:int x,y; char a,b,c;并有以下输入数据(此处代表换行符,代表空格): 12 ABC 则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是 。A.scanf(“x=%d y=%d”,&x,&y);a=getchar();b=getchar();c=getchar;B.scanf(“%d %d”,&x,&y);a=getchar();b=getchar();c=getchar();C.scanf(“%d%d%c%c%c”,&x,&y,&a,&b,&c);D.s
26、canf(“%d%d%c%c%c%c%cc”,&x,&y,&a,&a,&b,&b,&c,&c);6以下程序运行后的输出结果是 。#include void main()int a=666,b=888;printf(%dn,a,b);A.错误信息 B.666 C.888 D.666,8887下列程序执行后的输出结果是(小数点后只写一位) 。A. 6 6 6.0 6.0 B. 6 6 6.7 6.7 C. 6 6 6.0 6.7 D. 6 6 6.7 6.0#include void main() double d; float f; long l; int i; i=f=l=d=20/3; pr
27、intf(%d %ld %f %f n, i,l,f,d);二、填空题1下列程序的输出结果是: 。#include void main() double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf(%dn, d*y);2当输入以下数据时,100 200 300 400 500,下面语句的执行结果为 。#include void main()int a,b,c; scanf(%d%*d%d%d,&a,&b,&c); printf(%d %d %d,a,b,c);三、完善程序题1程序填空:读入一个四位正整数,逆序打印出各位数字。(提示:分别用除法运算符
28、“/”和求余运算符“”分离出正整数的各个位数,程序中变量a1,a2,a3,a4分别存放正整数的千位、百位、十位、个位数字)#includevoid main()int a,a1,a2,a3,a4; scanf(%d,&a); a1= ; a2= ; a3= ; a4= ; printf(%d %d %d %dn,a4,a3,a2,a1);2下面的两个程序是不借助于第三个变量将整型数据a和b中的值交换。法一:利用加减 main() long a,b; scanf(%ld%ld,&a,&b); printf(a=%d,b=%dn,a,b); a=a+b; b= ; a= ; printf(a=%l
29、d,b=%ldn,a,b); 法二:利用乘除 main() long a,b; scanf(%ld%ld,&a,&b); printf(a=%ld,b=%ldn,a,b); a=a*b; b= ; a= ; printf(a=%ld,b=%ldn,a,b); 第5章 选择结构程序设计知识点巩固习题一、选择题1下列运算符中优先级最高的运算符是 。A. ! B. % C. -= D. &2if语句园括号内的表达式 。 A.只能是逻辑表达式 B.只能是关系表达式C.只能是逻辑表达式或关系表达式 D.可用任意表达式3在C语言中,当关系表达式中的关系成立时,则该关系表达式的值为 。A.0 B.1 C.t
30、rue D.false4下列关于switch语句和break语句的结论中,只有 是正确的。 A.break语句是switch语句中的一部分; B.在switch语句中可以根据需要使用或不使用break语句; C.在switch语句中必须使用break语句; D.以上三个结论有两个是正确的。5对下面三条语句(其中s1和s2为内嵌语句),正确的论断是 。 (1)if(a) s1; else s2; (2)if(a=0)s2; else s1; (3)if(a!=0) s1;else s2;A.三者相互等价 B.(1)和(2)等价,但与(3)不等价C.三者互不等价 D.(1)和(3)等价,但与(2)
31、不等价6为表示关系xyz,应使用的C语言表达式是 。A.(x=y)&(y=z) B.(x=y)AND(y=z)C.(x=y=z) D.(x=y)&(y=z)7设 int x=1, y=1; 表达式(!x|y-)的值是 。A. 0 B. 1 C. 2 D. -18能正确表示a和b同时为正或同时为负的逻辑表达式是 。 A.(a=0|b=0)&(a0|b=0&b=0)&(a0&b0)&(a+b09表达式“10!=9”的值是 。A. true B. F C. 1 D. 010当a的值为5,b的值为4时,逻辑表达式a8的值是 。A. true B. false C. 0 D. 111设有以下语句:int x=3,y=4,z=5; 则下面表达式中值为0的是 。A.x&y B.x|y+z&y-z C.!(xy)&!z|1) D.x=y12以下程序的输出结果是 。A.0 B.1 C.2 D.3#include void main() int a=2,b=-1,c=2;
限制150内