C语言程序复习题及参考答案

18.可判断非0变量 a为正,b为负的正确表达式是_________。 )

A) a*b <0 B) (a>0||b >0)&&a*b <0

C) (a<0||b<0)&&a*b <0 D) a>0&&a*b<0

(

19.假定 int a=3, b=2, c=1, 表达式: (c==a>c)+(a/b) 的值是_________。 )

A) 1.75 B) 2 C) 1.5 D) 2.5

20.设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的

(

表达式是__________。 ( )

A) a&&b B) a<=b C) a||b+c&&b-c D) !((a

21、如果a=4,b=3,c=2,d=1,则条件表达式a<b?a:c<d?c:d的值是。 ( ) A、1 B、2 C、3 D、4 22、设有定义int a=1,b=2,c=3,d=4,m=2,n=2; 则执行表达式(m=ad)后,n的值为。 ( ) A、1 B、2 C、3 D、0

二、填空题:

1、设x=3,y=-4,z=5,则表达式!(x>y)+(y!=z)||(x+y)&&(y=z)的值是 。 2、 当a=5,b=4,c=2时,表达式 a>b!= c的值是 _______。

3、 为表示关系x ≥ y ≥z,正确的C语言逻辑、关系表达式为 。 4、有int a=3,b=4,c=5,x,y;,则以下表达式的值为

!(x=a)&&(y=b)&&c

5、在C语言中,表示逻辑\真\值用 .

6、当a=3,b=2,c=1时,表达式f=a>b>c的值是 .

7、与if(x==0) 等价的表达式写法写法是 。

8、若定义:int a=5,b=2,c=1; 则表达式 a-b>c||b==c 的值是 ; 表达式 a-b>c&&b==c 的值是 。

9、 “: ?”条件运算符是C语言中唯一的三目运算符。由其连接的表达式为条件表达式,

其格式为: <表达式1>?<表达式2>:<表达式3> 。执行过程:首先计算表达式1的值,如果表达式1的值是“真”(非0),则整个表达式的值为 的值;如果表达式1的值是“假”(0),则整个表达式的值为 的值。 10.C语言提供的三种逻辑运算符是______、______和_______。 11.若已知a=10,b=20,则表达式!a

12.若a,b变量的值任意,表达式(a==b)&&(a>b)的值是_________。 13.设x,y,z均为int型变量,请写出:

(1)x、y中至少有一个小于z的表达式_____________; (2)x、y都大于z的表达式____________;

14、能正确表示a>=10或a<=0的关系表达式为 。 15、以下程序的功能是:输出a、b、c三个变量中的最小值,请填空。 #include

第 19 页 共 88 页

main()

{ int a,b,c,min;

scanf(\

if( ) min=a; else min=b; if( ) min=c; printf(\

三、看程序写结果:

1、main()

{ int x, y, z ; x=y=z=1 ;

z=++x&&++y||++z ; 运行结果: printf(\

2、main( ) { int m=5;

if(m++>5)printf(\,m); 运行结果: else printf(\,m--); }

3、若从键盘输入58,则以下程序输出的结果是 。 main() { int a;

scanf(“%d”,&a);

if(a>50) printf(“%d”,a); if(a>40) printf(“%d”,a); if(a>30) printf(“%d”,a); }

4、 以下程序运行后的输出结果是 。 main()

{ int p,a=5; if(p=a!=0)

printf(\else

printf(\}

5、 源程序如下: #include main()

{ int a=2,b=7,c=5; switch(a>0)

第 20 页 共 88 页

{case 1: switch(b<0)

{case 1: printf(\ case 2: printf(\ }

case 0: switch(c==5)

{case 0: printf(\case 1: printf(\case 2: printf(\}

default: printf(\}

printf(\

运行结果:

6、main( )

{ int x=1, y=2;

switch(x) {case 0 :

case 1 : switch(y) 运行结果:

{ case 1:

case 2: y+=2; }

case 2 : x++; }

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

7.以下程序的输出结果是 。 main()

{ int x=1,y=1,a=0,b=0; switch(x)

{ case 1:switch(y) {case 0: a++; case 1: b++;

case 2: b++;break;

}

case 2: a++;b++;break; case 3: a++;b++;

}

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

8. 以下程序段的运行结果是_________。

int a,b,c; a=50;b=100;c=30;

if(a>b) { a=b;b=c;c=a;}

第 21 页 共 88 页

printf(\

9.下面程序的输出结果是

void main() { int i=10; switch(i) {

case 9:i+=1; case 10:i+=1; case 11:i+=1; case 12:i+=1; }

printf(“i=%d\\n”,i); }

( )

四、编程题:

1、从键盘输入3个整数,按照从大到小的顺序输出。 2、设有一个函数如下。编程,输入x,求y值。 y=错误!未找到引用源。

2

3、求一元二次方程ax+bx+c=0的根,要求考虑所有根的情况。 4、设有一个函数如下。编程,输入x,求y值。 y=错误!未找到引用源。

5.输入一个字符,判断其是否是大写字母,如果是,则转换成为小写字母,然后输出字符,如果不是小写字母,则直接输出字符。 6、有分段函数 x, x<1 y= 2x -1,1<=x<10 3x –11, x>=10

编写一程序,输入x,输出相应的y值。

7、分别用两种判断方法,写出判断一个年份为闰年的程序。

三、参考答案

一、选择题:

1~5 :CDCCB 6~10:BCCCC 11~15:DCDBC 16~20:BDDBD 21、A 22、B 二、填空题:

1、1 2、1 3、(x>=y)&&( y>=z ) 4、0 5、非零值 6、0 7、if(!x) 8、1 0 9、表达式2 ,表达式3 10、 ! ,&& ,|| 11、1 12、0 13、(1)x

第 22 页 共 88 页

联系客服:779662525#qq.com(#替换为@)