谭浩强--C语言程序设计(第二版)习题答案(共49页).docx
《谭浩强--C语言程序设计(第二版)习题答案(共49页).docx》由会员分享,可在线阅读,更多相关《谭浩强--C语言程序设计(第二版)习题答案(共49页).docx(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上C语言程序设计(第2版)课后习题答案第一章1.请参照本章例题,编写一个C程序,输出以下信息: * Very good! * 解: #includevoid main()printf(*); printf(n); printf(Very good!n); printf(n); printf(*); 2.编写一个C程序,输入a、b、c三个值,输出其中最大值。 解: #includevoid main() int a,b,c,max; printf(请输入三个数a,b,c:n); scanf(%d,%d,%d,&a,&b,&c); max=a; if(maxb) max=b
2、; if(maxc) max=c; printf(最大数为: %d,max); 第二章1.假如我国国民生产总值的年增长率为10%,计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为P=(1+r)n,r为年增长率;n为年数;P为与现在相比的百分比。解:#include#includevoid main() double P, r=0.1, n=10;P=pow(1+r), n);printf(%lfn, P);3.请编程序将China译成密码,译码规律是用原来字母后面的第4个字母代替原来的字母。例如,字母A后面第4个字母是E, E代替A。因此,China应译为Glmre。请编一程序
3、,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为C、h、i、n、a,经过运算,使c1、c2、c3、c4、c5分别变为G、l、m、r、e,并输出。 解: #include void main() char c1=C,c2=h,c3=i,c4=n,c5=a; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf(密码是%c%c%c%c%cn,c1,c2,c3,c4,c5); 第三章3.用下面的scanf函数输入数据,使a=3, b=7, x=8.5, y=71.82, c1=A, c2=a。问在键盘上如何输入? 解:#includevoid main(
4、) int a, b; float x, y; char c1, c2; scanf(a=%d, b=%d, &a, &b); scanf( x=%f, y=%e, &x, &y); scanf( c1=%c, c2=%c,&c1, &c2); a=3, b=7 x=8.5, y=71.82 c1=A, c2=a 5. 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后2位数字。请编程序。 解:#includevoid main() float r,h,C1,Sa,Sb,Va,Vb; scanf
5、(%f,%f,&r,&h); C1=2*3.14*r; Sa=3.14*r*r; Sb=4*Sa; Va=4*3.14*r*r*r/3; Vb=Sa*h; printf(C1=%.2fn,C1); printf(Sa=%.2fnSb=%.2fnVa=%.2fnVb=%.2fn,Sa,Sb,Va,Vb); 6. 输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9,输出要求有文字说明,取位2小数。 解:#includevoid main() float F,c; scanf(%f,&F); c=5*(F-32)/9; printf(c=%.2f,c); 7. 编程序,用getchar
6、函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。思考以下问题:(1)变量c1、c2应定义为字符型或整形?或二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如: charc1,c2;与intc1, c2; 是否无条件地等价? 解:#includevoid main() char c1,c2; c1=getchar();c2=getchar(); putchar(c1);putchar(n);putchar(c2);putchar(n); #
7、includevoid main() char c1,c2; c1=getchar();c2=getchar(); printf(c1=%d c2=%dn,c1,c2); printf(c1=%c c2=%cn,c1,c2); 第四章3. 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1) a+bc&b=c (2) a|b+c&b-c (3) !(ab)&!c|1 (4) !(x=a)&(y=b)&0 (5) !(a+b)+c-1&b+c/2 解: (1) 0 (2) 1 (3) 1 (4) 0 (5) 1 5. 有3个整数a、b、c,由键盘输入,输出其中最大的数,请编程序。 解:
8、#includevoid main() int a,b,c,temp,max; printf(请输入3个整数: ); scanf(%d,%d,%d,&a,&b,&c); temp=(ab)?a:b; max=(tempc)?temp:c; printf(3个整数的最大数是%dn,max); 6. 给一个百分制成绩,要求输出等级A、B、C、D、E。90分以上为A,8090分为B,7079分为C,60分以下为D。 解: #includevoid main() float score; char grade; printf(请输入学生成绩: ); scanf(%f,&score); while(sc
9、ore100|score0) printf(n输入有误,请重新输入: ); scanf(%f, &score); switch(int)(score/10) case 10: case 9: grade=A;break; case 8: grade=B;break; case 7: grade=C;break; case 6: grade=D;break; case 5: case 4: case 3: case 2: case 1: case 0: grade=E;break; printf(成绩是%5.1f, 相应的等级是%c. n,score,grade); 7. 给定一个不多于5位的正
10、整数,要求:(1)求出它是几位数;(2)分别输出每一位数字;(3)按逆序输出各位数字。例如原数为321,应输出123。 解: #include void main() long int num; int indiv,ten,hundred,thousand,ten_thousand,place; /*分别代表个位、十位、百位、千位、万位和位数*/ printf(请输入一个整数(099999): ); scanf(%ld,&num); if (num9999) place=5; else if(num999) place=4; else if(num99) place=3; else if(nu
11、m9) place=2; else place=1; printf(place =%dn, place); ten_thousand=num/10000; thousand=num/1000%10; hundred=num/100%10; ten=num%100/10; indiv=num%10; switch(place) case 5: printf(%d,%d,%d,%d,%d,ten_thousand,thousand,hundred,ten,indiv); printf(n反序数字为: ); printf(%d%d%d%d%dn,indiv,ten,hundred,thousand,
12、ten_thousand); break; case 4: printf(%d,%d,%d,%d,thousand,hundred,ten,indiv); printf(n反序数字为: ); printf(%d%d%d%dn,indiv,ten,hundred,thousand); break; case 3: printf(%d,%d,%d,hundred,ten,indiv); printf(n反序数字为: ); printf(%d%d%dn,indiv,ten,hundred); break; case 2: printf(%d,%d,ten,indiv); printf(n反序数字为:
13、 ); printf(%d%dn,indiv,ten); break; case 1: printf(%d,indiv); printf(n反序数字为: ); printf(%dn,indiv); break; 8. 企业发放的奖金根据企业的当年利润决定。当利润I低于或等于元时,奖金可提成10%;利润大于元,小于元(I)时,低于元的部分按10%提成,高于元的部分,可提成7.5%;利润大于元,小于元(I)时,低于元的部分仍按上述办法提成(下同),高于元的部分按5%提成。利润大于元,小于元(I)时,高于元的部分按3%提成。利润大于元,小于元()时,超过元的部分按1%提成。从键盘输入当年利润I,求应
14、发放奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。 解: (1) 用if语句编程序。 #include void main() long i; float bonus,bon1,bon2,bon4,bon6,bon10; bon1=*0.1; /*利润为10万元时的奖金*/ bon2=bon1+*0.075; /*利润为20万元时的奖金*/ bon4=bon2+*0.05; /*利润为40万元时的奖金*/ bon6=bon4+*0.03; /*利润为60万元时的奖金*/ bon10=bon6+*0.015; /*利润为100万元时的奖金*/ printf(请输入利润i
15、: ); scanf(%ld,&i); if(i=) bonus=i*0.1; /*利润在10万元以内按0.1提成奖金*/ else if(i=) bonus=bon1+(i-)*0.075; /*利润在10万至20万元时的奖金*/ else if(i=) bonus=bon2+(i-)*0.05; /*利润在20万至40万元时的奖金*/ else if(i=) bonus=bon4+(i-)*0.03; /*利润在40万至60万元时的奖金*/ else if(i=) bonus=bon6+(i-)*0.015; /*利润在60万至100万元时的奖金*/ else bonus=bon10+(i
16、-)*0.01; /*利润在100万元以上时的奖金*/ printf(奖金是%10.2fn,bonus); (2) 用switch语句编程序。 #include void main() long i; float bonus, bon1, bon2, bon4, bon6, bon10; int c; bon1=*0.1; bon2=bon1+*0.075; bon4=bon2+*0.05; bon6=bon4+*0.03; bon10=bon6+*0.015; printf(请输入利润i: ); scanf(%ld,&i); c=i/; if(c10) c=10; switch(c) cas
17、e 0: bonus=1*0.1;break; case 1: bonus=bon1+(i-)*0.075;break; case 2 : case 3: bonus=bon2+(i-)*0.05; break; case 4: case 5: bonus=bon4+(i-)*0.03;break; case 6: case 7: case 8: case 9: bonus=bon6+(i-)*0.015;break; case 10: bonus=bon10+(i-)*0.01; printf(奖金是%10.2f,bonus); 9. 输入4个整数,要求按由小到大的顺序输出。 解:#incl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 谭浩强 语言程序设计 第二 习题 答案 49
限制150内