谭浩强C语言程序设计习题集 下载本文

A)a=9,b=9,c=9 B)a=8,b=8,c=10 C)a=9,b=10,c=9 D)a=8,b=8,c=9 参考答案:B

参考分析:首先x进行--操作,x为9,然后与y进行等于比较,即9==9,然后y++为10。由于比较结果为真,故计算--x,为8,赋给a。

4.32 阅读以下程序,则执行下面语句后m的值是 。

int w=1,x=2,y=3,z=4,m; m=w

A)1 B)2 C)3 D)4 参考答案:A

4.33 若有int w=1,x=2,y=3,z=4;则表达式w

A)4 B)3 C)2 D)1 参考答案:D

*4.34 执行以下程序后的输出结果是 。

int w=3,z=7,x=10;

printf(\printf(\printf(\printf(\

A)0111 B)1111 C)0101 D)0100 参考答案:C 4.2 填空题

*4.35 若int a=3,b=2,c=1,f;表达式f=a>b>c的值是( )。 参考答案:0

参考分析:计算过程如下,a>b计算为真,然后计算 真(1)>c,结果为假 4.36 若int a=5,b=4,c=2;表达式a>b!=c的值是( )。 参考答案:1

*4.37 以下程序的运行结果是( )。

#include main()

{int x=1,y,z; x*=3+2;

printf(\x*=y=z=5;

printf(\x=y==z;

printf(\}

参考答案:5□□□□□□□25□□□□□□1(制表符为7个) 4.38 在C语言中,表示逻辑―真‖值用( )。 参考答案:非0的数值。

*4.39 设y为int型变量,请写出描述―y是奇数‖的表达式( )。 参考答案:y%2==1 y%2!=0 y%2 (y-1)%2==0 !(y%2==0) 4.40 c语言提供的三种逻辑运算符是( )、( )和( )。 参考答案:&& || !

4.41 设x,y,z均为int型变量,请写出描述―x或y中有一个小于z‖的表达式( )。 参考答案:x

*4.42设x,y,z均为int型变量,请写出描述―x,y,z中有两个为负数‖的表达式( )。 参考答案:x*y*z>=0&&((x<0&&y<0)||(x<0&&z<0)||(y<0&&z<0))

参考分析:原书提供的答案是(x<0&&y<0)||(x<0&&z<0)||(y<0&&z<0),但当三个变量均为负数时不合适,后来本人思考了一个试图简化一些的答案,即x*y*z>0&&(x<0||y<0||z<0) 可是若有一个变量为零,其他为负数时也不合适,只有参考答案才无懈可击。

4.43 已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||AB的值是( )。 参考答案:0

参考分析:在本表达式的计算过程中A

4.44 若int a=6,b=4,c=2;表达式!(a-b)+c-1&&b+c/2的值是( )。 参考答案:1

4.45 若a=2,b=4,则表达式!(x=a)||(y=b)&&0的值是( )。 参考答案:0

4.46 若a=1,b=4,c=3,则表达式!(a

4.47 若a=6,b=4,c=3,则表达式a&&b+c||b-c的值是( )。 参考答案:1

4.48 若a=5,b=2,c=1,则表达式a-b

4.49 若a=3,b=4,c=5,则表达式a||b+c&&b的值是( )。 参考答案:1

4.50 条件―22&&x<3||x<-10

4.51 当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!=b)&&(n=b>c)后,n的值为( ),m的值为( )。 参考答案:0 1

4.52 以下程序的运行结果是 。

main() {int x,y,z; x=1;y=2;z=3; x=y--<=x||x+y!=z; printf(\}

参考答案:1,1

参考分析:这是两个表达式的或运算,第一个表达式y--<=x相当于2<=1为假,y变量增为1,第二表达式x+y!=z相当于1+1!=3为真,故x的值为1。 4.53 以下程序的运行结果是 。

main()

{int a1,a2,b1,b2; int i=5,j=7,k=0; a1=!k; a2=i!=j;

printf(\b1=k&&j;

b2=k||j;

printf(\}

参考答案:a1=1 a2=1 b1=0 b2=1

*4.54 以下程序的运行结果是 。

main() {int x,y,z; x=1;y=1;z=0; x=x||y&&z;

printf(\}

参考答案:1,0

参考分析:本题采用短路算法,由于x为真,后面的或和与运算均被短路。 4.55 有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为( )。 参考答案:1

4.56 有int x,y,z;且x=3,y=-4,z=5,则表达式!(x>y)+y!=z)||(x+y)&&(y-z)的值为(参考答案:1

4.57有int x,y,z;且x=3,y=-4,z=5,则表达式x++-y+(++z)的值为( )。 参考答案:13

4.58 有int a=3,b=4,c=5;则表达式a||b+c&&b==c的值为( )。 参考答案:1

4.59 有int a=3,b=4,c=5,x,y;则表达式!(x=a)&&(y=b)&&0的值为( )。 参考答案:0

4.60 有int a=3,b=4,c=5;则表达式!(a+b)+c-1&&b+c/2的值为( )。 参考答案:1

4.61 若运行时输入:16,则以下程序的运行结果是 。

#include void main(void) {int year;

printf(\scanf(\if (year>=18)

printf(\else

printf(\}

参考答案:your $3.0 yuan/xiaoshi

4.62 若运行时输入:2,则以下程序的运行结果是 。

#include void main(void) {char class;

printf(\scanf(\if (class=='1')

printf(\else

printf(\

。 )

}

参考答案:2nd class postage is 14p

4.63 若运行时输入:4.4,则以下程序的运行结果是 。

#include void main(void)

{float costprice,sellingprice; printf(\scanf(\if(costprice>=5)

{sellingprice=costprice+costprice*0.25;

printf(\} else

{sellingprice=costprice+costprice*0.30;

printf(\} }

参考答案:Selling Price(0.30)$ 5.72 4.64 以下程序的运行结果是 。

main()

{if (2*2==5<2*2==4) printf(\else

printf(\}

参考答案:F

*4.65 请阅读以下程序,若运行时输入:1605时,程序的运行结果是 。

main() {int t,h,m;

scanf(\h=t/100; if(h==0) h=12; printf(\m=t0;

if(m<10) printf(\printf(\if (t<1200||t==2400) printf(\else

printf(\}

参考答案:4:05PM

4.66 以下程序实现:输入园的半径r和运算标志m,按照运算标志进行指定计算,请填空。

标志 运算 a 面积 c 周长

b 二者均计算