谭浩强C语言程序设计习题集

x x=a或x=-a -aa y 0 sqrt(a*a-x*x) x #include main() {int x,a; float y;

scanf(\if(【1】) y=0;

else if(【2】) y=sqrt(a*a-x*x); else y=x;

printf(\}

参考答案:【1】x==-a||x==a【2】x>-a&&x

*4.81 以下程序的功能是计算一元二次方程ax2+bx+c=0的根,请分析程序填空。

#include main()

{float a,b,c,t,disc,twoa,term1,term2; printf(\

scanf(\if(【1】)

if(【2】) printf(\ else printf(\else

{disc=b*b-4*a*c; twoa=2*a; term1=-b/twoa; t=abs(disc);

term2=sqrt(t)/twoa; if(【3】)

printf(\ else

printf(\ } }

参考答案:【1】a==0 fabs(a)<1e-4【2】b==0【3】disc<0

4.82 以下程序根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。请分析程序填空。

#include \main()

{float a,b,c,s,area;

scanf(\if(【1】)

{s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(\

if(【2】)

printf(\等边三角形\ else if(【3】) printf(\等腰三角形\

else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c=a*a)) printf(\直角三角形\ else printf(\一般三角形\ }

else printf(\不能组成三角形\}

参考答案:【1】a+b>c&&b+c>a&&c+a>b【2】a==b&&b==c 【3】a==b||b==c||a==c

4.83 某邮局对邮寄包裹有如下规定:若包裹的长宽高任一尺寸超过1米或重量超过30千克,不予邮寄;对可以邮寄的包裹每件收取手续费0.2元,在加上根据下表按重量wei计算的邮资。请分析程序填空。 重量(千克) 收费标准 wei<10 0.80 10

main()

{float len,wei,hei,wid,mon,r;

scanf(\if(len>1||wid>1||hei>1||wei>30) 【1】; else if(wei<10) r=0.8; else if(wei<=20) r=0.75; else if(wei<=30) 【2】; if(r==-1) printf(\else

{【3】;printf(\}

参考答案:【1】r=-1【2】r=0.70【3】m=0.2+r*wei

**4.84 某服装店经营套服,也单件出售。若买的不少于50套每套80元;不足50套的每套90元;只买上衣每件60元;只买裤子每条45元。以下程序的功能是读入所买上衣c和裤子t的件数,计算应付款m。请分析程序填空。

main() {int c,t,m;

printf(\scanf(\if(【1】)

if(c>=50) m=c*80; else m=c*90; else

if(【2】)

if(t>=50) m=t*80+(c-t)*60; else m=t*90+(c-t)*60;

else

if(【3】) m=c*80+(t-c)*45; else m=c*90+(t-c)*45; printf(\}

参考答案:【1】t==c 【2】c>t 【3】c>=50

4.85 以下程序的功能是判断输入的年份是否是闰年。请分析程序填空。

main() {int y,f;

scanf(\if(y@0==0) f=1; else if(【1】) f=1; else 【2】;

if (f) printf(\else printf(\printf(\}

参考答案:【1】year%4== 0&&year0!=0【2】f=0

*4.86 以下程序段针对输入的截止日期(年:yend,月:mend,日:dend)和出生日期(yman,mman,dman),计算出实际年龄。请分析程序填空。 设有:int yend,mend,dend,yman,mman,dman;

age=yend-yman;

if(mend【1】)mman) age--;

else if(mend【2】mman&&dend【3】dman) age--; 参考答案:【1】<【2】==【3】<

4.87 有四个数a,b,c,d,要求从大到小的顺序输出。请分析程序填空。

main()

{int a,b,c,d,t;

scanf(\if(a

printf(\}

参考答案:【1】c

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

main()

{int a=2,b=3,c; c=a;

if(a>b) c=1;

else if(a==b) c=0; else c=-1 printf(\}

参考答案:-1

4.89 若a=1,b=2,则表达式a>b?a:b+1的值是 。 参考答案:3

4.90 若a=1,b=2,c=3,d=4,则表达式a>b?a:c>d?c:d的值是 。 参考答案:4

*4.91 设有变量定义:int a=10,c=9;则表达式(--a!=c++)?--a:++c的值是 。 参考答案:11

4.92 若有说明语句:int x=1,y=0;则表达式x>(y+x)?10:12.5>y++?'a':'A'的值是 。 参考答案:'a'

*4.93 若有说明语句:int a=1,b=0;则表达式++a*--a==b?12%5:'x'的值是 。 参考答案:'x'

4.94 若有x=1,y=2,z=3,则表达式(x

**4.95 若有说明语句:int x=1,y=0;则表达式x-->(y+x)?5:25>y++?'1':'2'的值是 。 参考答案:5

参考分析:增量运算在条件运算的第一个表达式中时,关系运算符两侧各为一个处理单元。x--中的值是1,然后增为0,故y+x为0+0,因此整个表达式计算结果为真。 4.96 以下程序的运行结果是 。

#include main()

{int a=-10,b=-3; printf(\printf(\printf(\}

参考答案:1,-13,-7

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

main()

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

printf(\

printf(\printf(\}

参考答案:3,2,3,3

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

main() {int x,y,z; x=3; y=z=4;

printf(\printf(\}

参考答案:0,1

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

main()

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