桂林电子科技大学C语言程序设计习题集及答案 下载本文

}

顺序、选择结构程序设计

一 单项选择题(每题2分,共40分)

1 以下程序运行后的输出结果是_B_。

main()

{ int a=0,b=0;

a=10; b=20; printf(\a+b=%d\\n\,a+b); }

A a+b=10 B a+b=30 C 30 D 出错 2 以下程序运行后的输出结果是_C__。 为什么不是

main()

{ double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf(\%d\\n\,d*y); }

A 3 B 3.2 C 0 D 3.07 3 以下程序运行后的输出结果是__C_。

main()

{ double d; float f; long l; int i; i=f=l=d=20/3;

printf(\%d %ld %.1f %.1f\\n\,i,l,f,d); }

A 6 6 6.0 6.0 B 6 6 6.7 6.7 C 6 6 6.0 6.7 D 6 6 6.7 6.0 4 以下程序运行后的输出结果是_D__。

main()

{ int a=1,b=2;

a=a+b; b=a-b; a=a-b; printf(\%d,%d\\n\,a,b); }

A 1,2 B 1,1 C 2,2 D 2,1 5 以下程序运行后的输出结果是_A__。

main()

{ int x,y,z; x=y=2; z=3;

y=x++-1; printf(\%d %d \,x,y); y=++x-1; printf(\%d %d\\n\,x,y); y=z---1; printf(\%d %d \,z,x); y=--z-1; printf(\%d %d\\n\,z,x); }

A 3 1 4 3 B 3 1 3 3 C 3 1 4 3 D 2 1 3 2 2 4 1 4 2 4 2 2 2 4 1 2 1 3 1 2 6 以下程序运行后的输出结果是_D__。

4

main()

{ int x,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 7 以下程序运行后的输出结果是_D__。

main()

{ int x=4,y=7; x-=y; y+=x;

printf(\%d %d\\n\,x,y); }

A 4 7 B -3 -3 C -3 11 D -3 4

8 以下程序运行后的输出结果是__C_。

main()

{ unsigned short a=65536; int b; printf(\%d\\n\,b=a); }

A 65536 B 0 C 1 D -1 9 以下程序:

#include main()

{ char c1,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<回车>

则输出结果是__B_。 为什么?

A 1267 B 1256 C 1278 D 1245

10 设a、b和c都是int型变量,且a=3,b=0,c=5,则以下值为0的表达式是__C_。

A 'a'&&'b' B a&&b||c C a&&b&&c D a||b&&c 11 在嵌套使用if语句时,C语言规定else总是_C__。

A 和之前与其具有相同缩进位置的if配对 B 和之前与其最近的if配对

C 和之前与其最近不带else的if配对 D 和之前的第一个if配对

12 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为

_D__。

A a<>0 B !a C a=0 D a

5

13 以下程序运行后的输出结果是__C_。

main()

{ int a=2,b=-1,c=2; if(a

if(b<0) c=0; else c++;

printf(\%d\\n\,c); }

A 0 B 1 C 2 D 3 14 若k是int型变量,下面的程序段的输出结果是 C 。

k=-3;

if(k<=0) printf(\####\) else printf(\&&&&\);

A #### B &&&&

C ####&&&& D 有语法错误,无输出 15 以下程序运行后的输出结果是_A__。

main()

{ int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3;

printf(\%d,%d,%d,%d\\n\,a,b,c,d); }

A 0,1,2,0 B 0,0,0,3 C 1,1,2,0 D 编译有错 16 以下程序运行后的输出结果是_A__。

main()

{ int x1=1,x2=0,x3=0;

if(x1=x2+x3) printf(\****\); else printf(\####\); }

A **** B 有语法错误 C #### D 无输出结果 17 当a=1,b=3,c=5,d=4时,执行下面一行程序后,x的值是_B__。

if(a

if(c

if(b

A 1 B 2 C 3 D 6 18 下列叙述中正确的是_D__。

A break语句只能用于switch语句 B 在switch语句中必须使用default

C break语句必须与switch语句中的case配对使用 D 在switch语句中不一定使用break语句

19 若有定义:float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是__C_。

6

A switch(x) B switch((int)x);

{ case 1.0:printf(\*\\n\); { case 1:printf(\*\\n\); case 2.0:printf(\**\\n\); } case 2:printf(\**\\n\); } C switch(a+b) D switch(a+b)

{ case 1:printf(\*\\n\); { case 1:printf(\*\\n\); case 2+1:printf(\**\\n\); } case c:printf(\**\\n\); }

20 以下程序运行后的输出结果是__A_。

#include 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; }

printf(\a=%d,b=%d\\n\,a,b); }

A a=2,b=1 B a=1,b=1 C a=1,b=0 D a=2,b=2

二 填空题(每题3分,共30分)

1 以下程序运行后的输出结果是_9,10__。

#include main()

{ int i=010 , j=10; i是八进制 printf(\%d,%d\\n\,++i,j--); }

2 以下程序运行后的输出结果是_000__。

#include main()

{ printf(\%d%d%d\\n\,'\\0','\\0','\\0'); }

3 以下程序运行后的输出结果是_i= 11 j= 15

k= 33__。

main()

{ int i=5,j,k; j=i+++i+++i++;

k=(++i)+(++i)+(++i);

printf(\i=] j=]\\nk=]\\n\,i,j,k); }

4 下面的程序运行时从键盘上输入9876543210<回车>,a=98,b=76.0,c=54__。

main()

{ int a; float b,c;

7

程序的输出结果是_