1、C语言习题集习 题 一一、选择题1C程序的基本单位是( A)。A函数 B文件 C语句 D字符2C程序中的变量(B )。A不用说明 B先说明后引用C先引用后说明 D引用和说明顺序无关3变量的说明在(B )。A执行语句之后 B执行语句之前C执行语句当中 D位置无关4C语言是一种( C)。A机器语言 B符号语言C高级语言 D面向对象的语言二、填空题1一个C程序总是从 主函数 开始执行。2结构化程序由 顺序 、 选择 、 循环 三种基本结构构成。3一个C程序只有一个名为 main 的主函数。4C程序中的每个语句以 分号 结束。5C程序中,函数由 函数首部 和 函数体 组成。6每个基本结构有 一个 入口
2、和 一个 出口,没有 死循环 和 死语句 。7算法是 计算机解决问题所依据的步骤。习 题 二一、选择题1下列数据中属于字符串常量的是( B)。AABC BABC Cabc DA2在计算机内存中,n占用的字节数是( C)。A4 B3 C1 D23字符串ABC在内存中占用的字节数是( D)。A6 B8 C3 D44在C语言中,合法的长整型常数是 ( B)。A568701400 B0L C0.03546287 D2.654e115char型常量在内存中存放的是( A)。AASCII代码值 BBCD代码值C十进制代码值 D内码值6下列各项中正确的标识符是( D)。A?bb Ba=8 C b. Db_4
3、7下列不正确的转义字符是( D)。A B 0 C D0x48设整型变量a、b的值均为5,则表达式(m=n=a+)/(n=b-2)的值为( B)。A0 B1 C2 D39设a的值为5,执行下列语句后,b的值不为2的是( C)。Ab=a/2 Bb=6-(-a) Cb=a%2 Db=(float)a/210执行语句x=(a=3,b=a-)后,x、a、b的值依次是( C)。A3,3,2 B3,2,2 C3,2,3 D2,3,211设有语句int a=3;,则执行了语句a+=a-=a*a;后,变量a的值是( D)。A3 B0 C9 D-1212在下列运算符中,优先级最高的是( B)。A& B% C= D
4、=13设整型变量a的值为3,则计算表达式a-a后,表达式的值为(B)。A1 B0 C2 D表达式出错14设整型变量a、b、c的值均为2,表达式a-b+c+的结果是( C)。A6 B9 C2 D表达式出错15若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是( D)。A1 B2.5 C2 D2.016下列表达式中符合C语言语法的赋值表达式是( C)。Aa=4+b+c=a+8 Ba=4+b+=a+8 Ca=(4+b,b+,a+8) Da=4+b,c=a+817若有以下定义:char a;int b;float c;double d;,则表达式a*b+d-c的值的类型为( D)。
5、Aint Bfloat Cchar Ddouble二、填空题1在内存中存储A要占 2 个字节,存储A要占 1 个字节。2符号常量的定义方法是 #define 常量名 常量 。3无符号基本整型的数据类型符为 unsigned int双精度实型数据类型符为 double ,字符型数据类型符为 char 。4十进制数673的二进制、八进制和十六进值数分别为 1010100001 、 2412 和 2A1 。5在C语言中,书写八进制数时必须加前缀 0 ;书写十六进制数时必须加前缀 0x 。6在微机上,int型、short型、long型、float型和double型数据一般在内存中分别占 2 字节、 2
6、 字节、 4 字节、 4 字节和 8 字节。7设有下列运算符:=,其中优先级最高的是 + ,优先级最低的是 & 。8设x、y为int型变量,且x=1,y=2,则表达式1.0+x/y的值为 1.0 。9设整型变量x、y、z均为5,则: 执行x-=y-z后,x的值为 5 。 执行x%=y+z后,x的值为 5 。10数学式的C语言表达式为 a/b*c) 。三、简答题1字符常量与字符串常量有什么区别?2对于Turbo C系统来说,char型变量与int型变量在内存中存储数据的区别是什么?3整型变量可细分为哪六类?4什么是一个实型数据的规范化指数形式?5设x=3.5,a=5,y=6.7,求算术表达式x+
7、a%3*(int)(x+y)%2/4的值。6设a=2,b=3,x=4.5,y=1.6,求表达式(float)(a+b)/2+(int)x%inty的值。 7设整型变量a=12,写出下列表达式运算后a的值。 a*=2+5 a/=a+a a+=a-=a*=a8写出下列程序的运行结果。main() char c1=A,c2=B,c3=C,c4=101,c5=h42;printf(A%cb%ct%ctbcn,c1,c2,c3);printf(tb%c%c,c4,c5);结果:AAbB C abc AB9写出下面程序的运行结果。main() int i,j,m,n;i=5;j=6;m=+i;n=-j;p
8、rintf(%d,%d,%d,%d,i,j,m,n);结果:6,5,6,5习 题 三一、选择题1printf()函数输出实数时,使用的格式字符是(C)。A%d B%c C%f D%o2下面变量说明中(C)是正确的。Achar:a ,b ,c; Bchar a;b;c; Cchar a , b , c; Dchar a,b ,c3putchar()函数可以向终端输出一个(D )。A整型变量表达式值 B实型变量值 C字符串 D字符或字符型变量值4阅读以下程序,当输入数据的形式为:25,13,10CR,正确的输出结果为( D )。main() int x,y,z;scanf(%d%d%d,&x,&y
9、,&z);printf(x+y+z=%dn, x+y+z); Ax+y+z=48 Bx+y+z=35 Cx+z=35 D不确定值5以下说法正确的是( D )。A. 输入项可以是一个实型常量B. 只有格式控制,没有输入项,也能进行正确输入,如scanf(a=%d,b=%d);C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(%4.2f,&f);D. 当输入数据时,必须指明变量的地址,如scanf(%f,&f);6以下能正确地定义整型变量a、b和c并为其赋初值5的语句是(C )。Aint a=b=c=5; Bint a,b,c=5;Cint a=5,b=5,c=5; Da
10、=b=c=5;7已知ch是字符型变量,下面正确的赋值语句是(B )。Ach=a+b; Bch=xff; Cch=08; Dch=;8设x、y均为float型变量,则以下不合法的赋值语句是( B )。A+x; By=(x%2)/10; Cx*=y+8; Dx=y=0;9以下格式符中,不能用来输入实型数的是( B )Af Be(E) Cg(G) Dx10. 若float num=123.456,以%+10.4d的格式输出,结果正确的是( B )A123.456000 B 123.4560 C123.4560 D+123.4560二、填空题1以下程序的输出结果是 x=1 y=2 *sum*=3 10
11、 squaredis :100 。main() int x=1,y=2;printf(x=%d y=%d *sum*=%dn,x,y,x+y);printf(10 squared is :%dn,10*10);2以下程序的输出结果是 a=325 x= 3.14 。main() int a=325;double x=3.1415926;printf(a=%2d x=%7.2fn,a,x);3假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空:a+=b ; b=a-b ;a-=b ;4若x为int型变量,则执行以下语句后x的值是 -14 。x=7;x+=x-=x+x;
12、5C语句可以分为五类,含 7 种控制语句、 声明 语句、 表达式 语句、空语句和复合语句。6赋值语句是由 赋值表达式 加上一个分号构成。7a=12,n=5,表达式a%=(n%=2)值是 0 。8有一个输入函数scanf(%d,k);则不能使float类型变量k得到正确数值的原因是 k前无& 和 %d与k的类型不一致 。9putchar()函数可以向终端输出一个 字符 。10已有定义int i,j;float x;为将-10赋给 i,12赋给 j,410.34赋给x,则对应以下scanf()函数调用语句的数据输入形式是 -12 C 410.34 。scanf(%o%x%e,&i,&j,&x);1
13、1pirntf()函数中用到格式符%5s,其中数字5表示输出的字符串占5列,如果字符串长度大于5,则 按实际宽度输出 。12使用getchar()和putchar()函数必须在源程序中加 #includestdio.h 。习 题 四一、选择题1执行下面的程序段后,b的值为( B )。int x=35;char z=A;int b;b=(x&15)&(zb)(n-cd)后n的值为( B )。A.1 B2 C3 D43若k是int型变量,且有下面的程序段,输出结果是( A )。K=3;if(k=0) printf(#);else printf(&);A# B&C#& D有语法错误,无输出结果4设A
14、、B和C都是int型变量,且A=3,B=4,C=5,则下面表达式中值为0的达式是( D )。 AA&B BA=BCAB+CB D!(AB)&!C1)5阅读程序: #includestdio.hmain() float x,y;scanf(f,&x);if(x0.0) y=0.0;else if(x5.0)&(x!=2.0)y=1.0(x+2.0);else if(x10.0) y=1.0x;else y=10.0;printf(fn,y);若运行时从键盘上输入2.0,则上面程序的输出结果是( C )A0.000000 B0.250000 C0.500000 D1.0000006阅读程序:#in
15、cludestdio.hmain() int x=1,y=0,a=0,b=0;switch(x) case 1:switch(y) case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;printf(a=d,b=dn,a,b);上面程序输出结果是( A )。Aa=2,b=l Ba=l,b=l Ca=l,b=0 Da=2,b=27下面程序的输出是(C )。main( ) int a=1,b=4,k;k=(a+=0)&(!(b-=y)&(y=z) B(x=y)AND(y=z)C(x=y=z) D(x=y)&(y=z)9若要求在if后一对圆括号中表示a
16、不等于0的关系,则能正确表示这一关系的表达式为( D )。Aa0 B!a Ca=0 Da10若有以下定义:float x; int a,b;则正确的switch语句是(D )。Aswitch(x)case 1.0:printf(*n);case2.0:printf(*n);Bswitch(x)case 1,2:printf(*n);case 3:printf(*n);Cswitch(a+B) case 1:printf(n);case 1+2:printf(*n);Dswitch(a+b);case 1:printf(*n);case 2:printf(*n);11.下列语句中,错误的是(C
17、)。Awhile(a=b)a+; Bwhile(0); Cdo Ddo printf(“okn”); x+;while(x=5) while(-x=0); 12. 执行语句:for(i=1;i+8;y=+i)printf(%d %d,x-,y);A10 1 9 2 B9 8 7 6 C10 9 9 0 D10 10 9 114. 以下for语句的循环次数为:( B )。int i=0,j=0;for(;!j&i=5;i+)j+;A5次 B1次 C6次 D无限多次15. 以下程序段中内嵌循环共被执行的次数为:( A )for(i=5;i;i-)for(j=0;jA&ch=Z)? (ch+32):
18、ch该表达式的值是 A 。2若已知a=10,b=20,则表达式“!ab”的值为 1 。3已知a=10,b=20,c=30,则表达式a=25&b-=2&c+?printf(*a=d,b=d,C=dn,a,b,c):printf(#a=d,b=d,C=dn,a,b,c);的值为 #a=10,b=19,c=30 。4下面程序的输出结果是 0,0,4 。main() int a=-1,b=4,k; k=(+a=0);printf(dddn,k,a,b);5假定所有变量均已正确说明,下列程序段运行后,x的值是 4 。a=b=c=0; x=35; if(!a) x-;else if(b); if(c) x
19、=3;else x=4;6若执行下面的程序时,从键盘上输入3和4,则输出结果是 3 。main( ) int a,b,s;scanf(dd,&a,&b);s=a;if(a&b) printf(dn,s); else printf(dn,s-);7以下程序的输出结果是 x=11,i=11 。main() int x=1,i=1;for(;x=10)break;if(x%2!=1)x+=3;continue;x-=1;printf(x=%d,i=%dn,x,i); 8以下程序的输出结果是 i=9,j=10 。main() int i=10,j=0;doj=j+i; i-;while(ij);pri
20、ntf(i=%d,j=%dn,i,j);9以下程序的输出结果是 35 。main() int m=7,n=5,i=1;doif(i%m=0)if(i%n=0)printf(“%dn”,i);break;i+;while(i!=0);10以下程序的输出结果是 1,-2 。main() int x=3;doprintf(%d,x-=2);while(!(-x);11以下程序的输出结果是 i=4,j=6 。main() int i,j; for(i=0;i5;i+) for(j=1;j10;j+) if(j=6) break; if(i3)break;printf(i=%d,j=%dn,i,j);习
21、 题 五一、选择题1下列为一维数组初始化时, 正确的是( D ).Aint a 1,3,5,7,9,15; Bint a5 ;Cint a55*3; Dint a50;2下列一维数组说明中,正确的是( A ).A#define M 10 Bint m;float sM; scanf(“%d”,&m);float am;Cint m=10, am; Dint a ;3若要将2,4,6,8存入数组a中,不正确的是( C ).Aint a4=2,4,6,8; Bint a =2,4,6,8;Cint a4; a=2,4,6,8; Dint a4; a0=2;a1=4,a2=6;a3=8;4若有说明:
22、 int a55; 则对数组元素的正确引用是( C ).Aa3+23 Ba0,3 Ca41+2 Da 25下列二维数组初始化中,错误的是( A ).Aint a2 =3,4,5; Bint a3=2,3,4,5,6,7;Cint a33=0; Dint a54=1,2,2,3,3,4,4,5;6若有以下数组定义: char ch=book_120n; 则数组ch的存储长度是(D )。A7 B.8 C.9 D.107以下程序段的输出结果是( A ).char str8=a,b,c,d,0,y,z,0;printf(%s,str);Aabcd Babcd yz Cabcdyz D出错8设有如下定义
23、: char s120=tianjin, s210=beijing;执行语句:strcpy(s1+4,s2); printf(%s,s1);后,输出结果是( B ).Atian Btianbeijing Ctianjinbeijing Dtianbeij9合法的数组定义是( B )Aint a string; Bint a 0, 1, 2, 3, 4, 5;Cchar astring; Dchar a 0, 1, 2, 3, 4, 5;10若有以下说明,则数值为4的表达式是( D )int a12=1,2,3,4,5,6,7,8,9,10,11,12;char c=a,d,g;Aag-c Ba
24、4 Cad-c Dad-c11.下列语句中,正确的是( D )Achar a3 =abc, I; Bchar a 3abc, I;Cchar a3 = a, I; Dchar a 3abc, I;12.设有如下定义,则正确的叙述为( C )char x=abcdefg;char y=a,b,c,d,e,f,g;A数组x和数组y等价 B数组x和数组y的长度相同C数组x的长度大于数组y的长度 D数组x的长度小于数组y的长度二、填空题1设有定义语句“int a34=1, 2, 3”,则a11值为 0 ,a21的值为 0 。2执行“int b5= , a 3=1, 2, 3, 4, 5, 6”后,b4= 0 ,a12= 6 。3下面程序的功能是输出数组s中最大元素的下标,请填空。 main() int k,p;int s=1,-9,7,2,-10,3;for(p=0,k=p;psk) printf(%dn,k);4下面程序的功能是将一个字符串str的内容颠倒过来,请填空。#includestring.hmain () int i,j, k ;char str
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1