1、习 题 汇 编第一章 C语言概述1.1选择题【题11】以下不是C语言的特点的是( B )A.C语言简洁、紧凑B能够编制出功能复杂的程序C. C语言可以直接对硬件进行操作DC语言移植性好【题12】以下不正确的C语言标识符是( D )。AABC Babc Ca_bc Dab.c【题13】以下正确的c语言标识符是( C )。Ax Ba十b Ca123 Dtest!【题14】一个c程序的执行是从( A ).Amain( )函数开始,直到main( )函数结束B第一个函数开始,直到最后一个函数结束C.第一个语句开始,直到最后一个语句结束Dmain( )函数开始,直到最后一个函数结束【题15】一个C语言程
2、序是由(B)。A)一个主程序和若干子程序组成B)函数组成C)若干过程组成D)若干子程序组成【题16】一个c程序是由( B )。A一个主程序和若干子程序组成B一个或多个函数组成C. 若干过程组成D若干子程序组成【题17】C语言派程序的基本单位是( B )。A过程 B函数 c子程序 D标识符【题18】编辑程序的功能是( A )。A建立并修改程序 B将c源程序编译成目标程序C调试程序 D命令计算机执行指定的操作 1.2填空题 【题1.9】c语言符号集包括【英文字母、数字和一些有待定含义的标点符号】。 【题110】一个c程序有且仅有一个【main()】函数。 【题111】C程序的基本单位是【函数 】。
3、 【题112】一个c派程序有【1】个main( )函数和【若干】二个其他函数 。【题113】在一个C源程序中,注释部分两侧的分界符分别是【/*】和【*/】。【题114】结构化设计中的三种基本结构是【顺序结构、分支结构和循环结构】。【题115】在C语言中,输入操作是由库函数【scanf】完成的,输出函数是由库函数【printf】完成的。 1.3编程题【题116】编写一个程序,在屏幕上输出你的姓名。试着上机编辑、编译、运行你的程序。 #include main() printf(My Name is : Your Name!n); 第二章 数据类型、运算符与表达式2.1选择题【题21】以下结果为整
4、数的表达式(设有int i;char c;float f;)(B).Ai十f Bi*c Cc十f Di十c十f【题22】以下不正确的语句(设有int p,q)是( D )。AP*3; B.pq; C.p十3; Dpq;【题23】以下使i的运算结果为4的表达式是(D)。Aint i=0,j=0; (i3,(j十十)十i);Bint i=1,j=0; ji(i=3)*2);C.int i=0,j=1; (j1)?(i1);(i3);Dint i1,j1; i+j十2;【题24】下列四组选项中,均不是C语言关键字的选项是(A).A)define B)getc C)include D)while i
5、f char sanf gotype printf case pow【题25】下列四个选项中,均是C语言关键字的选项是(B)。A auto B switch C signed D if enum typedef union struct include continue scanf type【题26】设char ch;以下正确的赋值语句是(B). Ach123; Bchxff; Cch08; Dch”; 【题27】C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 (C)。 【题2.8 】下面四个选项中,均是合法整形常量的选项是(A). A)160B)-0xcdf C)-01
6、D)-0x48a -0xffff 01a 986,012 2e5 011 0xe 0668 0x 【题2.9】设n10,i4、则赋值运算ni+1执行后,n的值是(A). A0 B3 C2 D1 【题2.10】下面四个选项中,均是不合法浮点数的选项是(B). A)160.B)123 C)-.18D)-e30.12 2e4.2 123e4 0.234 e3 .e50.0 1e3 【题2.11】下面四个选项中,均是合法浮点数的选项是(B). A)+1e+1B)-.60 C)123eD)-e3 5e-9.4 12e-4 12e-.4 .8e-4 03e2 -8e5 +2e-1 5.e-0 【题2.12
7、】逗号表达式(a3*5,a*4),a十15的值为( C ),a的值为( C )。 A15 B60 C30 D不确定 A60 B30 C15 D90 【题2.13】下面四个选项中,均是不合法转义字符的选项是( B ). A)”B)1011 C)011 D)abc f 101 xf a x1f 【题2.14】如果a1,b2,c3,d4,则条件表达式ab?a:cd?c:d的值为(A). A1 B2 C3 D4 【题2.15】下面四个选项中,均是不正确的八进制数或十六进制数的选项是(D). A)016 B)oabc C)010 D)0a12 0x8f 017 -0x11 7ff 018 0xa 0x1
8、6 -123【题2.16】下面四个选项中,均是正确的八进制数或十六进制数的选项是(C). A)-10 B)0abcC)0010 D)0a12 0x8f -017 -0x11 -0x123 -011 0xc 0xf1 -0xa【题2.17】下面四个选项中,均是正确的数值常量或字符常量的选项是(D). A)0.0B)”a”C)3 D)+001 0x8f 3.9E-2.5 011 0xabcd 8.9e 1e1 0xFF00 2e2 & 0a 50.【题2.18】下面不正确的字符串常量是(A.) A)abc B)”1212” C)”0” D) “ ”【题2.19】在程序中可以用来作为变量名的合法的标
9、识符是:_A.)static B) 23_b1 C)stu_1t D) #33 【题2.20】若有代数式3ae/bc,则不正确的C语言表达式是(C) A)a/b/c*e*3B)3*a*e/b/c C)3*a*e/b*cD)a*e/c/b*3 【题2.21】已知各变量的类型说明如下: Int k,a,b; Unsigned long w=5; Double w=1.42; 则以下不符合C语言与法的表达式是(A). A)x%(-3) B)w+=-2 C)k=(a=2,b=3,a+b) D)a+=a-=(b=4)*(a=3) 【题2.22】已知各变量的类型说明如下: Int i=8,k,a,b; U
10、nsigned long w=5; Double x=1.42,y=5.2; 则以下符合C语言语法的表达式是(A) A)a+=A-=(b=4)*(a=3) B)a=a*3=2 C)x%(-3) D)y=float (i) 【题2.23】以下不正确的叙述是(D)A)在C程序中,逗号运算符的优先级最低B)在C程序中,APH和aph是两个不同的变量C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整形变量只能输入整形数值,对于实型变量只能输入实型数值【题2.24】以下正确的叙述是(D).A)在C程序中,每行中只能写一条语句B)若a是实型变量
11、,C程序中允许赋值a=10,因此实型变量中允许存放整型数C)在C程序中,无论是正数还是实数,都能被准确无误的表示D)在C程序中,%是只能用于正数运算的运算符【题2.25】以下符合C语言语法的赋值表达式是(B).A)d=9+e+f=d+9B)d=9+e,f=d+9C)d=9+e,e+,d+9D)d=9+e+=d+7【题2.26】已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=A+6-3;后,c2的值为(A). A)D B)68 C)不确定的值 D)C【题2.27】在C语言中,要求运算数必须是整形的运算符是(D).A)/ B)+ C)!= D)%【题2.28】若以下变量均是
12、整形,且num=sum=7;则计算表达式sUM=num+,sUM+,+num后sum的值为(A). A)7 B)8 C)9 D)10【题2.29】在C语言中,int、char和short三种类型数据在内存中所占用的字节数(D)。A)由用户自己定义B)均为2个字节C)是任意的D)有所用的机器的机器字长决定【题2.30】若有说明语句: char c=72; 则变量c(A)。A)包含1个字符B) 包含2个字符C)包含3个字符D) 说明不合法,c的值不确定【题2.31】 若有定义:int a=7; float x=205 ,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是(A)。A
13、)2.500000B)2.750000C)3.500000D)0.000000【题2.32】sizeof(float)是(B)。A)一个双精度型表达式B) 一个整型表达式C)一种函数调用D) 一个不合法的表达式【题2.33】设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为(C)。A)intB)floatC)doubleD)不确定【题2.34】下面四个选项中,均是非法常量的选项是(A)。A)asB)C)-0x18D)0xabc -0fff 01 01177 0 0xa 12,456 0xf “a”【题2.35】若有代数式,则正确的C语言表达式是(A)。A)sqrt
14、(fabs(pow(y,x)+log(y)B) sqrt (abs(pow(y,x)+long(y)C) sqrt (fabs(pow(x,y)+log(y)D) sqrt (abs(pow(x,y)+long(y)【题2.36】设int n3;则十十n的结果是( C ),n的结果是(C) A)2 B)3 C)4 D)5【题2.37】在C语言中,char型数据在内存中的存储形式是(D)。A)补码B)反码C)源码D)ASCII码【题2.38】设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是(B)。A)n=(n*100+0.5)/
15、100.0B) m=n*100+0.5, n=m/100.0C)n=n*100+0.5/100.0D) n=(n/100+0.5)*100.0【题2.39】设int n3;则n十十的结果是( B ),n的结果是( C )。 A)2 B)3 C)4 D)5【题2.40】设C语言中,一个int型数据类型在内存中占2个字节,则unsigned int型数据的取值范围为(C)。A)0255B)032767C)065535D)02147483647【题2.41】设有说明: char w; int x; float y; double z; 则表达式w*x+z-y值的数据类型为(D)。A)floatB)c
16、harC)itn D)double.【题2.42】语句(1,2,3,4)的结果是( D )。 A)1 B)2 C)3 D)4【题2.43】设int a04,b;则执行ba1;语句后,b的结果是( D ). A)04 B)4 C)10 D)22.2填空题【题2.44】表达式103的结果是【3】 【题2.45】表达式10%3的结果是【1】【题2.46】 设int x;当x的值分别为1、2、3、4时表达式(x&l1)?1:o的值分别是【1】,【0】,【1】,【0】.【题2.47】 执行下列语句后,a的值是【-264】 int a12;a+=a-=a*a;【题2.48】 定义int x,yl执行y(x
17、1,十十x,x十2)5语句后,y的值是【4】【题2.49】在C语言中(以16位PC机为例),一个char型数据在内存中所占用的字节数为【1】;一个int型数据在内存中所占用的字节数为【2】。【题2.50】在C语言中(以16位PC机为例),一个float型数据在内存中所占用的字节数为【4】;一个double型数据在内存中所占用的字节数为【8】。【题2.51】若有以下定义,则计算表达式y+=y-=m*=y后y值是【-6】;【题2.52】在C语言中,一个int型数据在内存中占用2个字节,则int型数据的取值范围为【一32768一十32767】【题2.53】在C语言中的实型变量分为两种类型,他们是【单
18、精度型(或:float型)】和【双精度型(或;double型】。【题2.54】C语言所提供的基本数据类型包括:单精度型、双精度型、【整型】、【字符型】和【枚举型】。【题2.55】若s是int型变量,且s6,则下面表达式的值为【1】. s%2+(s+1)%2【题2.56】若a、b和c均是int型变量,则计算表达式后,a值为【6】,b值为【4】,c值为【2】。 a=(b=4)+(c=2)【题2.57】若a是int型变量,且a的初值为6,则计算表达式后a的值为【60】a+=a-=a*a【题2.58】若a是int型变量,则计算表达式后a的值为【2】a=25/3%3【题2.59】若x和n均是int型变量
19、,且x和n的初值均为5,则计算表达式后x的值为【10】,n的值为【6】。x+=n+【题2.60】若有定义:int b=7; float a=2.5,c=4.7;则下面表达式的值为【5500000】。a+(int)(b/3*(int)(a+c)/2)%4【题2.61】 若有定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值为【3.500000】。 (float)(a+b)/2+(int)x%(int)y【题2.62】 若有定义:char c=010;则变量c中包含的字符个数为【1个】。【题2.63】 若有定义:int x=3,y=2;float a=2.5,b=3
20、.5;则下面表达式的值为【1】。【题2.64】 若x和n均是int型变量,且x的初值为12,n的初值为5,则计算表达式后x的只为【0】。 x%=(n%=2)【题2.65】 假设所有变量均为整型,则表达式(a=2,b=5,a+,b+,a+b)的值为【9】。【题2.66】 C语言中的标识符只能由三种字符组成,它们是【字母】,【数字】和【下划线】。【题2.67】 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=a+8-3的值为【f】.【题2.68】 把以下多项式写成只含七次乘法运算,其余皆为加、减运算的表达式【x*X *(x *(x*(x*(X*(5*x十3)一4)十2)
21、十1)一6)十1)十10】。 5X7+3X6-4X5+2X4+X3-6X2+X+10【题2.69】 若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x)的值为【8000000】。【题2.70】 若有定义:int e=1,f=4,g=2;float m=10.5,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt (double)n)*1.2/g+m后k的值是【13700000】。【题2.71】 表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3)值的数据类型为【整型(或:int型)】。【题2.72】 表达式pow
22、(2.8,sqrt(double(x) 值的数据类型为【双精度型(或:doubLe型)】。【题2.73】 假设m是一个三位数,从左到右用a、b、c表示各位的数字,则从左到右各个数字是bac的三位数的表达式是【m10lo *100十m100*10十m10】。【题2.73】 设int x9,y8;表达式xy+1的结果是【1】。【题2.73】 设int x10,y,z;执行y2x;xyz后,变量x的结果是【1】。【题2.73】 设int a1,b2,c,d,e;执行c(一a十十)十(十十b) d(b一一)+(十十a)一a; e(a(十十b)一(b(一一a); 后,变量a、b、c、d、e的结果分别是【
23、2】【3】【2】【3】【0】【题2.73】 设int a1,b2c3,d;执行d!(a十b十c)后,d的结果是【0】【题2.74】 设int a2,b3,c,d,e,f;执行c(a十十一b); d(a十十b); e(a一一!b); f(十十ab一一); 后,变量c、d、e、f的结果分别是【1】【1】【0】【0】第三章 最简单的C程序设计3.1 选 择 题【题3.1】若要求的值分别为、,正确的数据输入是()。 A)10A 20B B)10 A 20 B C)10 A20B D)10A20 B【题3.2】有如下程序,若要求a1、a2、c1、c2的值分别为10、20、A、B,正确的数据输入是().m
24、ain()int a1,a2;char c1,c2;scanf(%d%d,&a1,&a2);scanf(%c%c,&c1,&c2):A)1020ABB)10 20 ABC)10 20 ABCD)10 20AB【题3.3】有如下程序输入数据:12345M678cR后,x的值是( ),y的值是 ( )。#includemain()int x;float y;scanf(%3d%f,&x,&y);1,A.12345 B.123 C.45 D.3452,A.15.000000 B.45678.000000 C.678.000000 D.123.000【题3.4】有如下程序,输入数据:12M345CR后
25、,x的值是(),y的值是().#includemain()int x;float y;scanf(%3d%f,&x,&y);1,A.12 B.123 C.12345 D.02,A.12.000000 B.345.000000 C.12345.000000 D.0.000000【题3.5】以下C程序正确的运行结果是(C). main() long y=-43456; printf(“y=%-8ldn”,y); printf(“y=%-08ldn”,y);printf(“y=%08ldn”,y);printf(“y=%+8ldn”,y); A)y= -43456 B)y=-43456 y=- 43
26、456 y=-43456 y=-0043456 y=-0043456y=-43456 y=+ 43456C) y=-43456 D) y= -43456y=-43456 y=-0043456y=-0043456 y=00043456 y= -43456 y=+43456【题3.6】 以下C程序正确的运行结果是(D). main() int y=2456;printf(“y=%3on”,y);printf(“y=%8on”,y);printf(“y=%#8o|n”,y);A)y= 2456 B)y= 4630 y= 2456 y= 4630 y=#2456 y=#4630 C)y=2456 D)
27、y=4630 y= 2456 y= 4630 y= 02456 y= 04630【题3.7】以下C程序正确的运行结果是(A). main() long y=23456;printf(“y=%3xn”,y);printf(“y=%8xn”,y);printf(“y=%#8xn”,y);A) y = 5ba0 B) y = 5ba0y = 5ba0 y = 5ba0y = 0x5ba0 y = 0x5ba0C) y = 5ba0 D) y = 5ba0 y = 5ba0 y = 5ba0 y = 0x5ba0 y = # # # #5ba0【题3.8】 若x,y均定义为int型,z定义为doubl
28、e型,以下不合法的scanf函数调用语句是(D).A) scanf(“%d%d1x,%1e”,&x,&y,&z);B) scanf(“%2d*%d%1f”,&x,&y,&z);C) scanf(“%x%*d%o”,&x,&Y);D) scanf(“%x%o%6.2f”, &x,&y,&z);【题3.9】已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据是,正确的数据输入方式是(A)。(注:表示空格,表示回车)int a1,a2;char c1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);A) 10A20B B)
29、 10A20BC) 10A20B D) 10A20B【题3.10】已有定义int x; float y;且执行scanf(“%3d%3f”,&x,&y);语句时从第一列开始输入数据12345678,则x的值为(B),y的值为(B)。(注:表示空格)【1】A)12345 B)123 C) 45 D) 345【2】A)无定植 B) 45.000000 C) 678.000000 D) 123.000000【题3.11】已有如定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A 和B,当从第一列开始输入数据时,正确的数据输入方式是(D)。(注:表示回车)int a1,a2; char
30、 c1,c2;scanf(“%d%d”,&a1,&a2);scanf(“%c%c”,&c1,%c2);A) 1020AB B) 1020 ABC)10 20 AB D) 1020AB【题3.12】已有程序和输入数据的形式,程序中输入语句的正确形式应当为(D)。(注:表示空格,表示回车)main() int a; float f;printf(“nInput number:”);输入语句printf(“nf=%f,a=%dn”,f,a);Input number:4.5 2A) scanf(“%d,%f”,&a,&f);B) scanf(“%f,%d”,&f,&a);C) scanf(“%d,%
31、f”,&a,&f);D) scanf(“%f,%d”,&f,&a);【题3.13】根据定义和数据的输入方式,输入语句的正确形式为(B)。已有定义:float f1,f2;数据的输入方式:4.523.5A) scanf(“%f,%f”,&f1,&f2);B) scanf(“%f%f”,&f1,&f2);C) scanf(“%3.2f%2.1f”,&f1,&f2);D) scanf(“%3.2f,%2.1f”,&f1,&f2);【题3.14】阅读以下程序,当输入数据的形式为:25,13,10,正确的输出结果为(D)。main() int x,y,z;scanf(“%d%d%d”,&x,&y,&z)
32、;printf(“x+y+z=%dn”,x+y+z);A) x+y+z=48B) x+y+z=35C) x+z=35D) 不确定值【题3.15】根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是(B)。main() int x;float y;pringf(“enter x,y;”)输入语句输出语句输入形式 enter x,y:2 3.4输出形式 x+y=5.40A) scanf(“%d,%f”,&x,&y);printf(“nx+y=%4.2f”,x+y);B) scanf(“%d%f”,&x,&y);printf(“nx+y=%4.2f”,x+y);C) scanf(“
33、%d%f”,&x.&y);printf(“nx+y=%6.1f”,x+y);D) scanf(“%d%3.1f”,&x,&y);printf(“nx+y=%4.2f”,x+y);【题3.16】以下说法正确的是(D).A) 输入项可以为一个实型常量,如scanf(“%f”,3.5);B) 只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);C) 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);D) 当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);【题3.17】根据下面的程序及数据的输入和输出形式,程序
34、中输入语句的正确形式应该为(A).main() char ch1,ch2,ch3;输入语句printf(“%c%c%c”,&ch1,&ch2,&ch3);输入形式:A B C 输出形式:A Bscanf(“%c%c%c”,&ch1,&ch2,&ch3);scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);scabf(“%c %c %c”,&ch1,&ch2.&ch3);scanf(“%c%c”,&ch1,&ch2,&ch3);【题 3.18 】有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式
35、应当是 (D) 。(注:表示空格)A)132回车B)1,C)3,D)2回车E)a=1b=3c=2回车F)a=1,G)b=3,H)c=2回车【题3.19】 以下能正确的定义整形变量a,b,c并为其付初值5的语句是 (A).int a=b=c=5;int a,b,c=5;a=5 ,b=5,c=5;a=b=c=5;【题 3.20】 已知ch是是字符形变量,下面不正确的赋值语句是 (A).ch=a+b; ch=o;ch=7+9;ch=5+9;【题 3.21 】 已知ch是是字符形变量,下面正确的赋值语句是(B).ch= 123;ch=xff;ch=08;ch=”;【题3.22 】 若有以下定义,则正确的赋值语句是(B).int a,b; float xA)a=1,b=2B)b+;C)a=b=5D)b=int(x);【题 3.23】 设X,Y均为FLOAT变量,则以下不合法的赋值语句是(B)A)+x;B)y=(x%2)/10;C)x*=y+8;D)x=y=10;【题3.24】 设x,y,z均为int变量,则执行语句x