C语言各章节单元测试题及答案二.docx
《C语言各章节单元测试题及答案二.docx》由会员分享,可在线阅读,更多相关《C语言各章节单元测试题及答案二.docx(24页珍藏版)》请在冰豆网上搜索。
C语言各章节单元测试题及答案二
单元4顺序结构程序设计
1有以下程序
#include
main()
{
intc,d;
c=10^3;
d=10+3;
printf("%d,%d\n",c,d);
}
程序运行后的输出结果是()
A.103,13
B.13,13
C.10,13
D.9,13
2.有以下程序
#include
main()
{
intc,d;
c=10|5;d=10+5;
printf("%d,%d\n",c,d);
}
程序的运行结果是()
A.15,15
B.10,15
C.5,15
D.105,15
3.有如下程序
#include
main()
{
inta=8,b;
b=(a>>2)%2;
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是()
A.8,0
B.4,0
C.4,1
D.8,1
4.有以下程序
#include
main()
{
inta;
a=(int)(-1.53*3);
printf("%d\n",a);
}
程序的运行结果是()
A.-4
B.-3
C.-5
D.结果不确定
5有以下程序
#include
main()
{
inta;
a=(int)1.99*3;
printf("%d\n",a);
}
程序的运行结果是()
A.3
B.5
C.6
D.结果不确定
6有如下程序
#include
main()
{
inta=9,b;
b=(a>>3)%4;
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是()
A.9,1
B.4,0
C.4,3
D.9,3
7有以下程序
#include
main()
{
intc,d;
c=(13>>1)|1;
d=(13>1)||1;
printf("%d,%d\n",c,d);}
程序运行后的输出结果是()
A.6,1
B.1,1
C.7,1
D.7,2
8表达式:
(int)((double)9/2)-9%2的值是()
A.0
B.3
C.4
D.5
9sizeof(double)是()
A.一个整型表达式
B.一个双精度型表达式
C.一个不合法的表达式
D.一种函数调用
10有以下程序:
#include
main()
{
ints,t,A=10;doubleB=6;
s=sizeof(A);t=sizeof(B);
printf("%d,%d\n",s,t);
}
在VC6.0平台上编译运行,程序运行后的输出结果是()
A.10,6
B.4,4
C.2,4
D.4,8
11若有定义语句:
intx=10;,则表达式x-=x+x的值为()
A.0
B.-20
C.-10
D.10
12表达式a+=a-=a=9的值是()
A.18
B.-9
C.0
D.9
13若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是()
A.x+1=y
B.++x,y=x--
C.x=x+10=x+y
D.double(x)/10
14设有定义:
intx=2;,以下表达式中,值不为6的是()
A.2*x,x+=2
B.x++,2*x
C.x*=(1+x)
D.x*=x+1
15若有以下程序
#include
main()
{
inta=0,b=0,c=0;
c=(a-=++a),(a+=b,b+=4);
printf("%d,%d,%d\n",a,b,c);
}
则程序的输出结果是()
A.0,4,0
B.0,4,4
C.1,4,1
D.1,4,4
16若有以下程序
#include
main()
{
inta=0,b=0,c=0,d;
c=(a+=b,,b+=a);/*第4行*/
d=c;/*第5行*/
;/*第6行*/
;printf("%d,%d,%d\n",a,b,c);/*第7行*/
}编译时出现错误,你认为出错的是()
A.第4行
B.第5行
C.第6行
D.第7行
17以下叙述中正确的是()
A.复合语句在语法上包含多条语句,其中不能定义局部变量
B.花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的
C.空语句就是指程序中的空行
D.当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键)前,可以任意修改
18以下叙述正确的是()
A.C程序总是以main()作为程序执行的起始行
B.main()函数若不带参数,其后面的一对圆括号可省略
C.函数体内的定义语句和可执行语句允许任意穿插出现
D.C语言中的语句之间必须用分号作为分隔符
19阅读以下程序
#include
main()
{
intcase;
floatprintF;
printf("请输入2个数:
");
scanf("%d%f",&case,&printF);
printf("%d%f\n",case,printF);
}
该程序在编译时产生错误,其出错原因是()
A.定义语句出错,case是关键字,不能用作用户自定义标识符
B.定义语句出错,printF不能用作用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用
D.定义语句无错,printf不能输出case的值
20以下叙述中正确的是()
A.在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B.在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C.在printf函数中,各个输出项只能是变量
D.使用printf函数无法输出百分号%
21有以下程序
#include
main()
{
inta=2,c=5;
printf("a=%%d,b=%%d\n",a,c);
}
程序的输出结果是()
A.a=2,b=5
B.a=%2,b=%5
C.a=%d,b=%d
D.a=%%d,b=%%d
22设有定义:
intn=1234;
doublex=3.1415;
则语句
printf("%3d,%1.3f\n",n,x);
的输出结果是()
A.1234,3.142
B.123,3.142
C.1234,3.141
D.123,3.141
23若有以下程序
#include
main()
{inta=0,b=0,c=0
c=(a+=++b,b+=4);
printf("%d,%d,%d\n",a,b,c);
}
则程序的输出结果是()
A.1,5,1
B.1,5,5
C.-1,4,4
D.-1,4,-1
24有以下程序:
#include
main()
{
chara,b,c,d;
scanf("%c%c",&a,&b);
c=getchar();d=getchar();
printf("%c%c%c%c\n",a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:
回车也是一个字符)
12
34
则输出结果是( )。
A.1234
B.12
C.1234
D.123
25若要求从键盘读入含有空格字符的字符串,应使用函数
A.getchar()
B.getc()
C.gets()
D.scanf()
26以下叙述中正确的是()
A.在scanf函数的格式串中,必须有与输入项一一对应的格式转换说明符
B.只能在printf函数中指定输入数据的宽度,而不能在scanf函数中指定输入数据占的宽度
C.scanf函数中的字符串,是提示程序员的,输入数据时不必管它
D.复合语句也被称为语句块,它至少要包含两条语句
27以下不能输出字符A的语句是(注:
字符A的ASCII码值为65,字符a的ASCII码值为97)()
A.printf("%c\n",'a'-32);
B.printf("%d\n",'A');
C.printf("%c\n",65);
D.printf("%c\n",'B'-1);
28#include
main()
{
charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();
c6=getchar();
putchar(c1);
putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是()
A.1245
B.1256
C.1278
D.1267
29以下叙述中正确的是()
A.由printf输出的数据都隐含左对齐
B.scanf和printf是C语言提供的输入和输出语句
C.赋值语句是一种执行语句,必须放在函数的可执行部分
D.由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的
30有以下程序:
#include
main()
{ inta=1,b=0;
printf("%d,",b=a+b);
printf("%d\n",a=2*b);
程序运行后的输出结果是()
A.1,2
B.1,0
C.3,2
D.0,0
31有以下程序:
#include
main()
{ inta1,a2;charc1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
printf("%d,%c,%d,%c",a1,c1,a2,c2);
}
若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:
12,a,34,b则正确的输入格式是(以下_代表空格,代表回车)()
A.12_a34_b
B.12_a_34_b
C.12,a,34,b
D.12a34b
32按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。
A.大写字母
B.下划线
C.数字字符
D.连接符
33设有定义:
intx=11,y=12,z=0;,以下表达式值不等于12的是()
A.(z,x,y)
B.(z=x,y)
C.z=(x,y)
D.z=(x==y)
34以下不能输出小写字母a的选项是()
A.printf("%c\n","a");
B.printf("%c\n",'A'+32);
C.putchar(97);
D.putchar('a');
35有以下定义:
inta;
longb;
doublex,y;
则以下选项中正确的表达式是()
A.a=x<>y
B.a%(int)(x-y)
C.(a*y)%b
D.y=x+y=x
36设有定义:
intx=7,y=12;,则以下表达式值为3的是()
A.(y%=x)-(x%=5)
B.y%=(x%=5)
C.y%=x-x%5
D.y%=(x-x%5)
37有以下程序:
#include
main()
{
intx,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是()
A.2,3,3
B.2,3,2
C.2,3,1
D.2,2,1
单元5选择结构程序设计
1.若变量已正确定义,在if(W)printf("%d\n",k);中,以下不可替代W的是()
A.a<>b+c
B.ch=getchar()
C.a==b+c
D.a++
2.设有定义:
inta=1,b=2,c=3;
以下语句中执行效果与其它三个不同的是()
A.if(a
B.if(a
C.if(a
D.if(a
3.if语句的基本形式是:
if(表达式)语句,以下关于"表达式"值的叙述中正确的是()
A.必须是逻辑值
B.必须是整数值
C.必须是正数
D.可以是任意合法的数值
4.有以下程序:
#include
main()
{inta=0,b=0,c=0,d=0;
if(a=1){b=1;c=2;}
elsed=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
程序输出()
A.1,1,2,0
B.0,0,0,3
C.编译有错
D.0,1,2,0
5.下列关系表达式中,结果为"假"的是()
A.3<=4
B.(3<4)==1
C.(3+4)>6
D.(3!
=4)>2
6.以下叙述中正确的是()
A.在C语言中,逻辑真值和假值分别对应1和0
B.关系运算符两边的运算对象可以是C语言中任意合法的表达式
C.对于浮点变量x和y,表达式:
x==y是非法的,会出编译错误
D.分支结构是根据算术表达式的结果来判断流程走向的
7.有以下程序段:
#include
main()
{inta,b,c;
a=10;b=50;c=30;
if(a>b){a=b;b=c;c=a;}
printf("a=%db=%dc=%d\n",a,b,c);
}
程序的输出结果是()
A.a=10b=50c=30
B.a=10b=50c=10
C.a=10b=30c=10
D.a=50b=30c=50
8.设有定义:
inta=1,b=2,c=3;以下语句中执行效果与其它三个不同的是()
A.if(a>b)c=a,a=b,b=c;
B.if(a>b){c=a,a=b,b=c;}
C.if(a>b)c=a;a=b;b=c;
D.if(a>b){c=a;a=b;b=c;}
9.有以下程序
#include
main()
{inta,b,c=241;
a=c/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是()
A.2,1
B.6,1
C.6,0
D.2,0
10.与数学表达式x≥y≥z对应的C语言表达式是()
A.(x>=y)||(y>=x)
B.(x>=y>=z)
C.(x>=y)!
(y>=z)
D.(x>=y)&&(y>=z)
11.表示关系式x≤y≤z的C语言表达式的是()
A.(x<=y)&&(y<=z)
B.(x<=y)||(y<=z)
C.(x<=y<=z)
D.(x<=y)!
(y<=z)
12.下关于关系运算符两侧运算对象的叙述中正确的是()
A.可以是任意合法的表达式
B.只能是整数0或非0整数
C.可以是结构体类型的数据
D.只能是整数0或1
13.下列条件语句中,输出结果与其他语句不同的是()
A.if(a!
=0)printf("%d\n",x);elseprintf("%d\n",y);
B.if(a==0)printf("%d\n",y);elseprintf("%d\n",x);
C.if(a==0)printf("%d\n",x);elseprintf("%d\n",y);
D.if(a)printf("%d\n",x);elseprintf("%d\n",y);
14.有以下程序
#include
main()
{charc='A';
intx=36,b;
b=(x>>2)&&(c<'a');
printf("%d\n",b);
}
程序运行后的输出结果是()
A.1
B.0
C.2
D.4
15.若变量已正确定义,以下选项中非法的表达式是()
A.a!
=4||'b'
B.'a'=1/2*(x=y=20,x*3)
C.'a'%4
D.'A'+32
16.以下选项中,当x为大于1的奇数时,值为0的表达式是()
A.x%2==0
B.x/2
C.x%2!
=0
D.x%2==1
17.当变量c的值不为2、4、6时,值为"真"的表达式是()
A.(c>=2&&c<=6)&&(c%2!
=1)
B.(c==2)||(c==4)||(c==6)
C.(c>=2&&c<=6)&&!
(c%2)
D.(c>=2&&c<=6)||(c!
=3)||(c!
=5)
18.以下叙述中正确的是()
A.对于逻辑表达式:
a++||b++,设a的值为1,则求解表达式的值后,b的值会发生改变
B.对于逻辑表达式:
a++&&b++,设a的值为0,则求解表达式的值后,b的值会发生改变
C.else不是一条独立的语句,它只是if语句的一部分
D.关系运算符的结果有三种:
0,1,-1
19.有以下程序
#include
main()
{intx=35,B;
charz='B';
B=((x)&&(z<'b'));
printf("%d\n",B);
}
程序运行后的输出结果是()
A.1
B.0
C.35
D.66
20.以下叙述中正确的是()
A.逻辑"或"(即运算符||)的运算级别比算术运算要高
B.C语言的关系表达式:
0(0C.逻辑"非"(即运算符!
)的运算级别是最低的
D.由&&构成的逻辑表达式与由||构成的逻辑表达式都有"短路"现象
21.若有以下程序
#include
main()
{inta=1,b=2,c=3,d=4;
if((a=2)&&(b=1))c=2;
if((c==3)||(d=-1))a=5;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
则程序的输出结果是()
A.2,2,2,4
B.2,1,2,-1
C.5,1,2,-1
D.1,2,3,4
22.已知a=6,b=5,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=cA.1
B.0
C.2
D.-1
23.以下叙述中正确的是()
A.在C语言中,1代表真,0代表假
B.关系运算符两边的运算对象可以是C语言中任意合法的表达式
C.对于浮点变量x和y,表达式:
x==y可以精确判定两个浮点数值相等
D.分支结构是根据算术表达式的结果来判断流程走向的
24.设有定义:
inta=0,b=1;,以下表达式中,会产生"短路"现象,致使变量b的值不变的是()
A.a++&&b++
B.a++||++b
C.++a&&b++
D.++a&&++b
25.设有定义:
inta=0,b=1;,以下表达式中,会产生"短路"现象,致使变量b的值不变的是()
A.a++||++b
B.a--||++b
C.++a&&b++
D.a++&&b++
26.已知a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=cA.1
B.0
C.2
D.-1
27.若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?
(x++):
(y++)中的条件表达式(x-y)等价的是()
A.(x-y<0||x-y>0)
B.(x-y<0)
C.(x-y>0)
D.(x-y==0)
28.设有宏定义:
#defineIsDIV(k,n)((k%n==1)?
1:
0)
且变量m已正确定义并赋值,则宏调用:
IsDIV(m,5)&&IsDIV(m,7)
为真时所要表达的是()
A.判断m是否能被5和7整除
B.判断m被5和7整除是否都余1
C.判断m被5或者7整除是否余1
D.判断m是否能被5或者7整除
29.有以下程序
#include
main()
{inta=0,b=0,c=0,d=0;
(++a||++b)?
++c:
++d;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
程序的运行结果是()
A.1,0,1,0
B.1,1,0,1
C.1,0,0,1
D.1,1,1,0
30.若有定义:
inta=0,b=0,c=0,d=0;,以下关于C语言表达式:
(++a||++b)?
++c:
++d执行顺序的叙述正确的是()
A.先执行++a,表达式++a的值为1;再执行++b,表达式++b的值为1,由此可确定(++a||++b)值为1,因此执行++c
B.先执行++a,表达式++a的值为1,由此可确定(++a||++b)值为1,因此执行++c
C.先执行++b,表达式++b的值为1;再执行++a,表达式++a的值为1,由此可确定(++a||++b)值为1,因此执行++c
D.先执行++b,表达式++b的值为1,由此可确定(++a||++b)值为1,因此执行++c
31.若有定义:
inta=0,b=0,c=0,d=0;,有C语言表达式(a++&&b++)?
c++:
d++,以下关于其执行顺序的叙述正确是()
A.先执行a++,表达式a++的值为0,由此即可确定(a++&&b++)的值为0,因此执行d++
B.先执行a++,表达式a++的值为0;再执行b++,表达式b++的值为0,由此可确定(a++&&b++)值为0,因此执行d++
C.先执行a++,表确定(a++&&b++)值为1,因此执行c++,确定c++的值为1;再执行d++,表达式d++的值为1
D.先执行b++,表达式b++的