C语言易错题集合
1. 选择题
1,执行下列语句后a和b的值分别为( C )。
int a, b, c;
a=b=c=1;
++a|| ++b && ++c;
A: 错误 1
B: 2 2
C: 2 1
D: 1 1
2,若希望当A的值为奇数时,表达式的值为”真”,A的值为偶数时,表达式的值为”假”,则以下不能满足要求的表达式是( C )。
A: A%2==1
B: !(A%2==0)
C: !(A%2)
D: A%2
3,已知 int x=10, y=20, z=30;
以下语句执行后x, y, z的值是( B )。
if(x>y)
z=x;x=y;y=z;
A: x=10,y=20,z=30
B: x=20,y=30,z=30
C: x=20,y=30,z=10
D: x=20,y=30,z=20
4,判断char型变量cl是否为小写字母的正确表达式是( D )。
A: 'a'<=cl<='z'
B: (cl>=a)&&(cl<=z)
C: ('a'>=cl)||('z''<=cl)
D: (cl>='a')&&(cl<='z')
5,下述程序的输出结果是( C)
main()
{
int a=0,b=0,c=0;
if(++a>0||++b>0) ++c;
printf("%d,%d,%d",a,b,c);
}
A: 0,0,0
B: 1,1,1
C: 1,0,1
D: 0,1,1,
6,语句:printf(“%d”,(a=2)&&(b= -2));
的输出结果是(D)。
A: 无输出
B: 结果不确定
C: -1
D: 1
7, 若有定义:int a=3,b=2,c=1;
并有表达式:①a%b,
②a>b>c,
③b&&c+1
.则表达式值相等的是(C)
A: ①和②
B: ②和③
C: ①和③
D: ③和④
8,请阅读以下程序:
main()
{
int a=5,b=0,c=0;
if(a=b+c) printf(“***\n”);
else printf(“$$$\n”);
}
以上程序(D)。
A: 有语法错不能通过编译
B: 可以通过编译但不能通过连接
C: 输出***
D: 输出$$$
9,
若w=1,x=2,y=3,z=4
,则条件表达式w<x? w:y<z? y:z
的值是( D)
A: 4
B: 3
C: 2
D: 1
10,以下程序的输出结果是(B)。
main()
{
int x=2,y=-1,z=2;
if(x<y)
if(y<0) z=0;
else z+=1;
printf(“%d\n”,z);
}
A: 3
B: 2
C: 1
D: 0
11,
对下述程序,正确的判断是( B)
main()
{
int x,y;
scanf("%d,%d",&x,&y);
if(x>y)
x=y;y=x;
else
x++;y++;
printf("%d,%d",x,y);
}
A: 有语法错误,不能通过编译
B: 若输入3和4,则输出4和5
C: 若输入4和3,则输出3和4
D: 若输入4和3,则输出4和5
12,设int x,a,b;则下面if语句中错误的是(B )
A: if(a=b) x++;
B: if(a=
C: if(a-b) x++;
D: if(x) x++;
13,以下程序输出结果是(B)
main( )
{
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;
case 3:a++;b++;
}
printf("a=%d,b=%d",a,b);
}
A: a=1,b=0
B: a=2,b=1
C: a=1,b=1
D: a=2,b=2
14,
设int a=0,b=5;
执行表达式++a||++b,a+b
后,a,b和表达式的值分别是(C)
A: 1,5,7
B: 1,6,7
C: 1,5,6
D: 0,5,7
15 能正确标识“当x的取值在[1,10]或[200,210]范围内当真,否则为假”的表达是(C)
A: (x>=1)&&(x<=10)&&(x>200)&&(x<=210)
B: (x>=1)||(x<=10)||(x>=200)||(x<210)
C: (x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D: (x>=1)||(x<=10)&&(x>200)||(x<=210)
16有如下程序段
int a