2-1
在嵌套使用if语句时,C语言规定else总是(C)
A.和之前与其具有相同缩进位置的if配对
B.和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对
D.和之前的第一个if配对
2-2
下列程序段的输出结果是(C)。
int main(void)
{
int a = 2, b = -1, c = 2;
if(a < b)
if(b < 0)
c = 0;
else c++;
printf("%d\n",c);
return 0;
}
A.0
B.1
C.2
D.3
解析:在程序段中,首先定义了变量a、b、c,并分别赋值为2、-1、2。 接下来是if语句的嵌套。首先判断a是否小于b,显然条件不满足,所以if语句内部的代码块不会执行。 然后是else语句,它与前面的if语句是相对应的。由于if语句的条件不满足,所以else语句中的c++会执行,将c的值增加1。 最后通过printf函数输出c的值,即2。
2-3
在执行以下程序时,为使输出结果为:t=4,则给a和b输入的值应满足的条件是(C)。
int main(void)
{
int a,b,s,t;
scanf("%d,%d",&a,&b);
s = 1; t = 1;
if(a > 0) s = s + 1;
if(a > b) t = s + t;
else if(a == b) t = 5;
else t = 2 * s;
printf("t=%d\n",t);
return 0;
}
A.a>b
B.a
D.0>a>b
解析:
根据代码逻辑:
所以,为了使输出结果为 t = 4,应满足以下条件:
2-4
有一函数
,以下程序段中错误的是(C)。
A.
if(x > 0) y = 1;
else if(x == 0) y = 0;
else y = -1;
B.
y = 0;
if(x > 0) y = 1;
else if(x < 0) y = -1;
C.
y = 0;
if(x >= 0);
if(x > 0) y = 1;
else y = -1;
D.
if(x >= 0)
if(x > 0) y = 1;
else y = 0;
else y = -1;
2-5
下列程序段输出结果为 __B__。
int x = -3, y = 2;
if(x>y);
x = -x;
if(x
A.x=3,y=-2
B.x=3,y=2
C.x=-3,y=2
D.x=-3,y=-2
解析:
int x = -3, y = 2;
:声明并初始化变量 x 和 y,分别赋值为 -3 和 2。if(x>y);
:这是一个空的 if 语句,因为有一个分号 (;) 直接跟在 if 之后。它不会执行任何操作。x = -x;
:将变量 x 取负值,即 x = -(-3),结果为 x = 3。2-6
有如下程序:
#include
int main()
{
int a=2,b=-1,c=2;
if(a)
if(b<0) c=0;
else c++;
printf("%d\n",c);
return 0;
}
该程序的输出结果是( )
A.0
B.1
C.2
D.3
2-7
下列条件语句中,功能与其他语句不同的是
A.if (a)printf(" %d\n", x); else printf(" %d\n", y);
B.if (a == 0)printf(" %d\n", y); else printf(" %d\n", x);
C.if (a != 0)printf(" %d\n", x); else printf(" %d\n", y);
D.if (a == 0)printf(" %d\n", x); else printf(" %d\n", y);
2-8
下列程序的运行结果是
#include
int main (void)
{
int a, b, c;
a = 20; b = 30; c = 10;
if (a < b)a = b;
if (a >= b)b = c; c = a;
printf("a=%d, b=%d, c=%d\n", a, b, c);
return 0;
}
A.a=20, b=10, c=20
B.a=30, b=10, c=20
C.a=30, b=10, c=30
D.a=20, b=10, c=30
2-9
有定义语句“int a=1,b=2,c=3,x;”,则以下各程序段执行后,x的值不为3的是 C
A.
if(c
B.
if(a<3)x=3;
else if(a<2)x=2;
else x=1;
C.
if(a<3)x=3;
if(a<2)x=2;
if(a<1)x=1;
D.
if(a
2-10
语句if(x=0) y=1; else y=2;与( )等价。
A.if(x!=0) y=2; else y=1;
B.x=0; if(x==0) y=2; else y=1;
C.if(x==0) y=1; else y=2;
D.if(x=0) y=2; else y=1;
2-11
以下程序运行时,输入的x值在( )范围时才会有输出结果。
#include
int main()
{
int x;
scanf("%d",&x);
if(x<=3);
else if(x!=10)
printf("%d\n",x);
return 0;
}
A.不等于10的整数
B.大于3且不等于10的整数
C.大于3且等于10的整数
D.小于3的整数
2-12
对于以下代码:
int i = 6;
if ( i <= 6 ) printf("hello\n");;
else printf("bye-bye\n");;
A.打印出"hello"
B.打印出"hello bye-bye"
C.不能通过编译
D.打印出"bye-bye"
2-13
设有定义:int a=2,b=4,c=5;,以下语句中执行效果与其它三个不同的是____。
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;}
2-14
已知int x=10,y=20,z=30;以下语句:if(x>y) z=x; x=y; y=z;执行后x,y,z的值是( )。
A.x=10, y=20, z=30
B.x=20, y=30, z=30
C.x=20, y=10, z=10
D.x=20, y=30, z=10
2-15
已知int x=10,y=20,z=30;以下语句:if(x A.x=10, y=20, z=30 B.x=20, y=30, z=30 C.x=20, y=10, z=10 D.x=20, y=30, z=10 2-16 已知int x=10,y=20,z=30;以下语句:if(x A.x=10, y=10, z=10 B.x=20, y=30, z=30 C.x=20, y=30, z=10 D.x=20, y=20, z=20 2-17 已知int x=10,y=20,z=30;以下语句:if(x A.x=10, y=20, z=30 B.x=10, y=20, z=10 C.x=20, y=30, z=10 D.x=20, y=30, z=20 2-18 请阅读以下程序段: 以上程序( )。 A.有语法错误不能通过编译 B.可以通过编译但是不能通过连接 C.输出 Not Equal! D.输出 Equal! 解析:变量 a 被赋值为 b+c 的结果,因此 a 的值为 0。由于 0 为 false,所以条件语句为假,执行 2-19 以下if-else语句语法正确的是( )。 A. if(x>0) B. if(x>0) C. if(x>0) D. if(x>0) 2-20 有以下程序 若运行时输入:35<回车>,则输出结果是( )。 A.1 B.2 C.3 D.123 2-21 为了检查以下if-else语句的两个分支是否正确,至少需要设计3组测试用例,其相应的输入数据和预期输出结果是( ) 。 A.输入3和4,输出4;输入5和100,输出100;输入4和3,输出4。 B.输入3和4,输出4;输入100和5,输出100;输入4和3,输出4。 C.输入3和4,输出4;输入5和5,输出5;输入-2和-1,输出-1。 D.输入3和4,输出4;输入5和5,输出5;输入4和3,输出4。 2-22 下列关于算法流程图规范的说法,错误的是? A.使用矩形表示开始、结束 B.使用平行四边形来表示输入、输出 C.使用菱形表示判断 D.使用箭头表示执行方向 2-23 已知int a=7,b=9,c=6;则c的结果是( ). A.9 B.6 C.0 D.7 2-24 下列程序段输出结果为 ( )。 int x = -3, y = 4; if (x else printf("%d,%d", x, y); A.3,-4 B.-3,-4 C.3,4 D.-3,4 2-25 以下程序运行时,若从键盘输入5,则输出结果是( )。 main( ) { int a; scanf("%d",&a); if(a++>5) else } A.6 B.5 C.4 D.程序有错 2-26 以下四个选项中不能看作一条语句的是________。 A.{;} B.a=0,b=0,c=0; C.if(a>0); 2-27 若执行以下程序时从键盘上输入9,则输出结果是_________。 A.11 B.10 C.9 D.8 2-28 下面的条件语句中(其中S1和S2表示C语言语句),( )在功能上与其他三个语句不等价。 A.if (a==0) S1; else S2; B.if (a==0) S2; else S1; C.if (a!=0) S1; else S2; D.if (a) S1; else S2; 2-29 有以下程序: 程序运行时,输入的值在哪个范围才会有输出结果( ) A.不等于20的整数 B.大于5且不等于20的整数 C.大于5或等于20的整数 D.小于5的整数 2-30 关于 if 语句(判断) 关于 if 语句 与 if (x) 等价的语句是 ▁▁▁▁▁。 A.if (x == 0) B.if (x == 1) C.if (x != 0) D.if (x != 1) 2-31 若k是int型变量,且有下面的程序片段,上面程序片段的输出结果是 A. C.####&&&& D.有语法错误,无输出结果 2-32 若执下面程序时从键盘上输入5,则输出是 A.7 B.6 C.5 D.4 解析: 在程序中,首先使用scanf函数从键盘输入一个整数,并将其赋值给变量x。 接下来是if语句,判断x++是否大于5。这里需要注意的是x++是后缀自增运算符,它会先将x的值进行比较,然后再将x的值加1。 假设输入的数为5,则x的值为5。在比较过程中,x的值还是5,因此不满足条件。 由于if语句的条件不满足,所以执行else语句中的代码块。在printf函数中,先输出x的值,即6,然后再进行x--操作,将x的值减1。 2-33 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 A.7和5 B.6和3 C.7和4 D.6和4 2-34 以下程序的运行结果是 A.7 B.6 C.5 D.4 2-35 若执行下面的程序时从键盘上输入3和4,则输出是。 A.14 B.16 C.18 D.20 2-36 下面的程序运行结果为。 A.有语法错误不能通过编译 B.输出* * * * C.可以通过编译,但是不能通过连接,因而不能运行 D.输出# # # # 2-37 若有定义:int x=1,y=2,z=4;则以下程序段运行后z的值为。 A.3 B.-1 C.4 D.不确定 2-38 如有定义:int i=1; 则执行语句 if( i++ > 1) printf("%d",i++); 后,变量i的值是: A.1 B.2 C.3 D.不确定 2-39 下面程序段的输出为: A.5=5 B.3=3 C.5!=3 D.3!=5 2-40 下列叙述中正确的是()。 A.break语句只能用于switch语句 B.在switch语句中必须使用default C.break语句必须与switch语句中的case配对使用 D.在switch语句中,不一定使用break语句 2-41 下列程序段的输出结果是 ()。 A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 2-42 若有int x=67;,执行下列程序段后,变量x的正确结果是 ( )。 A.ABC B.A C.AB D.C 2-43 设变量已正确定义,以下( )与其它switch语句不等价。 A. B. C. D. 2-44 请读程序: 上面程序的输出结果是: A.a=2, b=1 B.a=1, b=1 C.a=1, b=0 D.a=2, b=2 2-45 若a,b,c1,c2,x,y均是整型变量,正确的switch语句是: A. B. C. D. 解析: 在A选项中,switch语句的表达式为a-b。switch语句根据表达式的值进行匹配,然后执行相应的代码块。 在这个例子中,如果a-b的值不匹配任何一个case,就会执行default中的代码块,即y=a*b; break;。 B选项中,switch语句的表达式后多了一个分号,会导致switch语句失效。 C选项中,switch语句的表达式为aa+bb,但是存在两个相同的case 3,这是不允许的。 D选项中,switch语句缺少了圆括号,并且case后的值应该是常量而不是变量c1和c2。 2-46 若有int x=1;,执行下列程序段后,变量x的正确结果是: A.1 B.2 C.3 D.4 2-47 执行以下代码段后,变量i 的值为( )。 A.11 B.31 C.33 D.32 2-48 以下关于switch语句和break语句的描述中正确的是( ) A.在switch语句中必须使用break语句 B.break语句只能用于switch语句体中 C.break语句只能用于循环语句中 D.在switch语句中可以不使用break语句 2-49 若 int i=10; 执行下列程序后,变量 i 的正确结果是( )。 A.10 B.11 C.12 2-50 若有定义int s=5;则执行下面的程序段后,s的值是( ). A.10 B.7 C.8 D.6 2-51 以下程序段运行后,输出结果是: (1分) A.ABCDE B.ABCE C.BCDE D.BCE 2-52 在switch结构中,可使用( )语句来终止其中的一个case语句块 A.over B.end C.break D.continue int a=5, b=0, c=0;
if ( a=b+c )
printf("Equal!\n");
else
printf("Not Equal!\n");
printf("Not Equal!\n")
printf("%f",x)
else printf("%f",-x);
{x=x+y; printf("%f",x);}
else printf("%f",-x);
{x=x+y; printf("%f",x);};
else printf("%f",-x);
{x=x+y; printf("%f",x)}
else printf("%f",x-); #include
int x, y;
scanf("%d%d", &x, &y);
if(x >= y){
printf("max = %d\n", x);
}else{
printf("max = %d\n", y);
}
{
if(a
x = -x;
if (x>y)
y = -y;
printf("%d\n",a);
printf("%d\n",--a);
D.if(b==0) m=1;n=2;#include "stdio.h"
void main( )
{
int n;
scanf("%d",&n);
if (n++<10)
printf("%d\n",n);
else
printf("%d\n",n--);
}
void main( )
{ int x,t=1;
scanf("%d" , &x);
if(x<=5) t++;
else if(x!=20)
printf("%d\n" , x);
}
k=-3
if(k<=0) printf("####")
else printf("&&&&");B.&&&&
main()
{
int x;
scanf("%d",&x);
if(x++>5) printf("%d\n",x);
else printf("%d\n",x--);
}
main( )
{
int x;
scanf("%d",&x);
if(x++>5)
printf("%d",x);
else
printf("%d\n",x--);
}
main( )
{ int n=5;
if(n++>=6)
printf("%d\n",n);
else
printf("%d\n",++n);
}
main()
{
int a,b,s;
scanf("%d %d",&a,&b);
s=a;
if(a s=b;
s=s*s;
printf("%d\n",s);
}
main()
{
int x=3,y=0,z=0;
if(x=y+z) printf("* * * *");
else printf("# # # #");
}
if(x>y) z=x+y;
else z=x-y;
int a=3, b=5;
if(a=b)printf("%d=%d",a, b);
else printf("%d!=%d", a, b);int main(void)
{
int x = 1, a = 0, b = 0;
switch(x)
{
case 0: b++;
case 1: a++;
case 2: a++; b++;
}
printf("a=%d,b=%d\n",a,b);
return 0;
}
switch (x/10)
{
case 7:
case 6: printf("A");
case 5: printf("B");break;
default: printf("C");
}
switch(choice){
case 1: price = 3.0; break;
case 2: price = 2.5; break;
case 3: price = 4.0; break;
case 4: price = 3.5; break;
default: price = 0.0; break;
}
switch(choice){
default: price = 0.0; break;
case 4: price = 3.5; break;
case 3: price = 4.0; break;
case 2: price = 2.5; break;
case 1: price = 3.0; break;
}
switch(choice){
case 1: price = 3.0; break;
case 2: price = 2.5; break;
case 3: price = 4.0; break;
case 4: price = 3.5; break;
}
price = 0.0;
switch(choice){
case 1: price = 3.0; break;
case 2: price = 2.5; break;
case 3: price = 4.0; break;
case 4: price = 3.5; break;
}
#include
switch(a-b)
{ default: y=a*b; break;
case 3: case 4: x=a+b; break;
case 10: case 11: y=a-b; break;
}
switch(a+b);
{ case 1: y=a+b; break;
case 0: y=a-b; break;
}
switch(a*a+b*b)
{ case 3:
case 1: y=a+b; break;
case 3: y=b-a; break;
}
switch a
{ case c1: y=a-b; break;
case c2: x=a*d; break;
default: x=a+b;
}
switch (x*10)
{
case 9: x+=1; break;
case 10: x+=1;
case 11: x+=1;
default: x+=1;
}
int i=1;
switch (i) {
case 1: i+=10;
case 2: i+=20;
case 3: i++; break;
default: i++; break;
}
switch (i) {
case 9: i+=1 ;
case 10: i+=1 ;
case 11: i+=1 ;
default : i+=1 ;
}
D.13switch(++s)
{ case 6:
case 7:s+=2;
case 8:
case 9:s+=2;
}
int x = 10;
switch (x)
{
case 30: printf("A");break;
case 10: printf("B");
case 20: printf("C");break;
case 40: printf("D");
}
printf("E");