《C语言习题答案全解.ppt》由会员分享,可在线阅读,更多相关《C语言习题答案全解.ppt(69页珍藏版)》请在第壹文秘上搜索。
1、C语言习题答案 第一章 第三章 第四章 第五章 第六章 第七章 第八章第一章 1.5 1.61.5请参照本章例题,编写一个C程序,输出以下信息: * Very Good! * 解: main() printf( * n); printf(n); printf( Very Good! n); printf(n); printf( *n); for(i=0;i30;i+) printf(“* ”);循环语句1.6编写一个程序,输入a b c三个值,输出其中最大者。 解:main() int a,b,c,max; printf(请输入三个数a,b,c:n); scanf(%d,%d,%d,&a,&b
2、,&c); max=a; if(maxb) max=b; if(maxc) max=c; printf(最大数为:%d,max); #include void main( ) int max(int x,int y); int a, b, c,d; scanf(“d,d,%d”,&a,&b,&c); d=max(a,b); d=max(c,d); printf(max=dn,d); int max(int x, int y) int z; if (xy) z=x; else z=y; return (z); 第三章 3.3 3.5 3.6 3.7 3.8 3.9 3.103.3 请将下面各数用
3、八进制数和十六进制数表示: (1)10 (2)32 (3)75 (4)-617 (5)-111 (6)2483 (7)-28654 (8)21003 解:十 八 十六 (10)=(12)=(a) (32)=(40)=20 (75)=(113)=4b (-617)=(176627)=fd97 -111=177621=ff91 2483=4663=963 -28654=110022=9012 21003=51013=520b 3.5字符常量与字符串常量有什么区别? 解: 字符常量是一个字符,用单引号括起来。 字符串常量是由0个或若干个字符连接而成,用双引号把它们括起来,存储时自动在字符串最后加一个
4、结束符号0. 3.6写出以下程序的运行结果: #include void main() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(a%c _b%ctc%ct_abcn,c1,c2,c3); printf(tb%c_%cn,c4,c5); ANP48 转义字符(一个制表区8位)解:程序的运行结果为: aa_bb_ _ _cc_ _ _ _ _ _abc _ _ _ _ _ _ _ A _ N P364 ASCII码3.7将“China”译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母, 例如,字母“A”后面第4个字母是“E”,用“E”代替“A
5、”.因此,“China”应译为“Glmre”. 请编一程序,用赋初值的方法使c1,c2,c3,c4,c5分别变成G,1,m,r,e,并输出. main() char c1=C,c2=h,c3=i,c4=n,c5=a; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf(“The key is%c%c%c%c%cn,c1,c2,c3,c4,c5); P62 复合赋值运算符3.8例3.6能否改成如下: #include void main() int c1,c2;(原为 char c1,c2) c1=97; c2=98; printf(%c%cn,c1,c2); p
6、rintf(%d%dn,c1,c2); 解:可以.因为在可输出的字符范围内,用整型和字符型作用相同.3.9求下面算术表达式的值. (1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7) (2)(float)(a+b)/2+(int)x%(int)y=3.5(设a=2,b=3,x=3.5,y=2.5) P55 算术运算符 (除法运算符。如:) 除号两边为整型则结果为整型 (模运算符,或称求余运算符,两侧均应为整型数据,如:的值为)。 正负号取决于被除数符号-的值为-, -(-)的值仍为-3.10写出下面程序的运行结果: #include void main()
7、int i,j,m,n; i=8; j=10; m=+i; n=j+; printf(%d,%d,%d,%dn,i,j,m,n); P57 自增自减运算符i+与与+i的区别:的区别: 是先执行后,再使用的值; 是先使用的值后,再执行。解:结果: 9,11,9,10第四章 4.4 4.5 4.7 4.8 4.94.4.a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=a,c2=b.想得 到以下的输出格式和结果,请写出程序要求输出的结果P76 格式字符main() int a,b,c; long int u,n; float x,y,z; cha
8、r c1,c2; a=3;b=4;c=5; x=1.2;y=2.4;z=-3.6; u=51274;n=128765; c1=a;c2=b; printf(n);printf(a=%2d b=%2d _ _ c=%2dn,a,b,c); printf(x=%8.6f,y=%8.6f,z=%9.6fn,x,y,z);printf(x+y=%5.2f_y=z=%5.2f_z+x=%5.2fn,x+y,y+z,z+x);printf(u=%6ld_ _n=%9ldn,u,n); printf(c1=%c or %d(ASCII)n,c1,c1); printf(c2=%c or %d(ASCII)n
9、,c2,c2); 结果如下: a=_3 b=_4 _ _ c=_5x=1.200000,y=2.400000,z=-3.600000 x+y=_3.60_y+z=-1.20_z+x=-2.40u=_51274_ _n=_ _ _128765c1=a or 97(ASCII) c2=B or 98(ASCII)4.5请写出下面程序的输出结果. 结果: 57 _ _ 5 _ _ 7 67.856400,-789.123962 67.856400_ ,-789.123962 _ _ _ 67.86, _ -789.12,67.856400,-789.123962,67.856400,-789.123
10、962 6.785640e+001, -7.89e+002 A,65,101,41 1234567,4553207,d687 65535,17777,ffff,-1 COMPUTER, _ _ COM4.6解:可按如下方式在键盘上输入: a=3 b=7 8.5 _ 71.82 A _ a 说明:在编程使用一个或多个scanf函数时,第一个输入行末尾输入的“回车”被第二个scanf函数吸收.因此在第二三个scanf函数的双引号后设一个空格以抵消上行输入的回车.如果没有这个空格,按上面输入数据会出错.4.7用下面的scanf函数输入数据使a=10,b=20,c1=A,c2=a,x=1.5,y=-3
11、.75,z=67.8,请问 在键盘上如何输入数据? scanf(%5d%5d%c%c%f%f%*f %f,&a,&b,&c1,&c2,&y,&z); 解: main() int a,b; float x,y,z; char c1,c2; scanf(%5d%5d%c%c%f %f %*f ,%f,&a,&b,&c1,&c2,&x,&y,&z); 运行时输入: _ _ _ 10 _ _ _ 20Aa1.5-3.75 _ 1.5,67.8 注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再打入10与20。%*f是用来禁止赋值的。在输入时,对应于%*f的地方,随意打入了一个数1.5,该值
12、不会赋给任何变量。4.8设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积,用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后两位数字.请编程. 解:main() float pi,h,r,l,s,sq,vq,vz; pi=3.1415926; printf(请输入圆半径r圆柱高h:n); scanf(%f,%f,&r,&h); l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=4.0/3.0*pi*r*r*r; vz=pi*r*r*h; printf(圆周长为: =%6.2fn,l); printf(圆面积为: =%6.
13、2fn,s); printf(圆球表面积为: =%6.2fn,sq); printf(圆球体积为: =%6.2fn,vz); 4.9输入一个华氏温度,要求输出摄氏温度,公式为C=5/9(F-32),输出要有文字说明,取两位小数. 解: main() float c,f; printf(请输入一个华氏温度:n); scanf(%f,&f); c=(5.0/9.0)*(f-32); printf(摄氏温度为:%5.2fn,c); 第五章 5.4 5.5 5.6 5.75.85.95.105.4有三个整数a,b,c,由键盘输入,输出其中最大的数. main() int a,b,c; printf(请
14、输入三个数:); scanf(%d,%d,%d,&a,&b,&c); if(ab) if(bc) printf(max=%dn,c); /* abc */else printf(max=%dn,b); /* ac */ else if(ab&ab&ac */ P99 if语句嵌套P97 else if语句方法2:使用条件表达式. main() int a,b,c,termp,max; printf( 请输入 A,B,C: ); scanf(%d,%d,%d,&a,&b,&c); printf(A=%d,B=%d,C=%dn,a,b,c); temp=(ab)?a:b; max=(tempc)?
15、 temp:c; printf( A,B,C中最大数是%d,max); P102 条件运算符条件运算符格式: 表达式?表达式 表达式 功能: 判断表达式1的值,如果成立就执行表 达式2,否则就执行表达式35.5 main() int x,y; printf(输入x:); scanf(%d,&x); if(x1) y=x; printf(“x=%d,y=x=%d n,x,y); else if(x10) y=2*x-1; printf( x=%d, y=2*x-1=%dn,x,y); else y=3*x-11; printf(“x=5d, y=3*x-11=%d n,x,y); 5.6百分制成
16、绩#includevoid main() float score; char grade;printf(“请输入学生成绩”);scanf(“%f”,&score);if(score100|score9999) place=5; else if(num999) place=4; else if(num99) place=3; else if(num9) place=2; else place=1; printf(place=%dn,place); printf(每位数字为:); ten_thousand=num/10000; thousand=(num-tenthousand*10000)/1000; hundred=(num-tenthousand*10000-thousand*1000)/100; ten=(num-tenthousand*10000-thousand*1000-hundred*100)/10; indiv=num-tenthousand*10000-thousand*1000-hundred*100-ten*10; 5.7给一个不多于5位的正整数,要求:1.求它是几