谭浩强C语言程序设计(第二版)习题答案.doc
《谭浩强C语言程序设计(第二版)习题答案.doc》由会员分享,可在线阅读,更多相关《谭浩强C语言程序设计(第二版)习题答案.doc(50页珍藏版)》请在三一办公上搜索。
1、C语言程序设计(第2版)课后习题答案第一章1.请参照本章例题,编写一个C程序,输出以下信息:*Very good!*解:#include<stdio.h>void main()printf("*");printf("n");printf("Very good!n");printf("n");printf("*");2.编写一个C程序,输入a、b、c三个值,输出其中最大值。 解:#include<stdio.h>void main()int a,b,c,max;printf
2、("请输入三个数a,b,c:n");scanf("%d,%d,%d",&a,&b,&c);max=a;if(max<b) max=b;if(max<c) max=c;printf("最大数为: %d",max);第二章1.假如我国国民生产总值的年增长率为10%,计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为P=(1+r),r为年增长率;n为年数;P为与现在相比的百分比。解:#include<stdio.h>#include<math.h>void main(
3、)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"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为C、h、i、n、a,经过运算,使c1、c2、c3、c4、c5分
4、别变为G、l、m、r、e,并输出。解:#include <stdio.h>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。问在键盘上如何输入?解:#include<stdio.h>void main()int a, b; float x, y; char c1,
5、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=7x=8.5, y=71.82c1=A, c2=a5. 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后2位数字。请编程序。解:#include<stdio.h>void main
6、()float r,h,C1,Sa,Sb,Va,Vb;scanf("%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小数。解:#include<stdio.h>vo
7、id main()float F,c;scanf("%f",&F);c=5*(F-32)/9;printf("c=%.2f",c);7. 编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。思考以下问题:(1)变量c1、c2应定义为字符型或整形?或二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:char c1,c2;与int c1, c2; 是否无条件地等价?解:#i
8、nclude<stdio.h>void main()char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(n);putchar(c2);putchar(n);#include<stdio.h>void 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)
9、a+b>c&&b=c(2) a|b+c&&b-c(3) !(a>b)&&!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) 15. 有3个整数a、b、c,由键盘输入,输出其中最大的数,请编程序。 解:#include<stdio.h>void main()int a,b,c,temp,max;printf("请输入3个整数: ");scanf("%d,%d,
10、%d",&a,&b,&c);temp=(a>b)?a:b;max=(temp>c)?temp:c;printf("3个整数的最大数是%dn",max);6. 给一个百分制成绩,要求输出等级A、B、C、D、E。90分以上为A,8090分为B,7079分为C,60分以下为D。解:#include<stdio.h>void main()float score;char grade;printf("请输入学生成绩: ");scanf("%f",&score);while(sco
11、re>100|score<0) 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&q
12、uot;,score,grade);7. 给定一个不多于5位的正整数,要求:(1)求出它是几位数;(2)分别输出每一位数字;(3)按逆序输出各位数字。例如原数为321,应输出123。解:#include <stdio.h>void main()long int num;int indiv,ten,hundred,thousand,ten_thousand,place; /*分别代表个位、十位、百位、千位、万位和位数*/printf("请输入一个整数(099999): ");scanf("%ld",&num);if (num>99
13、99) place=5;else if(num>999) place=4;else if(num>99) place=3;else if(num>9) 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_thous
14、and,thousand,hundred,ten,indiv); printf("n反序数字为: ");printf("%d%d%d%d%dn",indiv,ten,hundred,thousand,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;
15、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反序数字为: ");printf("%d%dn",indiv,ten);break;case 1: printf("%d",indiv);printf("
16、;n反序数字为: ");printf("%dn",indiv);break;8. 企业发放的奖金根据企业的当年利润决定。当利润I低于或等于100000元时,奖金可提成10%;利润大于100000元,小于200000元(100000<I200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;利润大于200000元,小于400000元(200000<I400000)时,低于200000元的部分仍按上述办法提成(下同),高于200000元的部分按5%提成。利润大于400000元,小于600000元(400000<
17、;I600000)时,高于400000元的部分按3%提成。利润大于600000元,小于1000000元(600000<I1000000)时,高于600000的部分按1.5%提成;利润大于1000000元(I>1000000)时,超过1000000元的部分按1%提成。从键盘输入当年利润I,求应发放奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。解:(1) 用if语句编程序。#include <stdio.h>void main()long i;float bonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1
18、; /*利润为10万元时的奖金*/bon2=bon1+100000*0.075; /*利润为20万元时的奖金*/bon4=bon2+200000*0.05; /*利润为40万元时的奖金*/bon6=bon4+200000*0.03; /*利润为60万元时的奖金*/bon10=bon6+400000*0.015; /*利润为100万元时的奖金*/ printf("请输入利润i: ");scanf("%ld",&i);if(i<=100000) bonus=i*0.1; /*利润在10万元以 else if(i<=200000)bonus
19、=bon1+(i-100000)*0.075; /*利润在10万至20万元时的奖金*/ else if(i<=400000)bonus=bon2+(i-200000)*0.05; /*利润在20万至40万元时的奖金*/ else if(i<=600000)bonus=bon4+(i-400000)*0.03; /*利润在40万至60万元时的奖金*/else if(i<=1000000)bonus=bon6+(i-600000)*0.015; /*利润在60万至100万元时的奖金*/ elsebonus=bon10+(i-1000000)*0.01; /*利润在100万元以上时
20、的奖金*/ printf("奖金是%10.2fn",bonus);(2) 用switch语句编程序。#include <stdio.h>void main()long i;float bonus, bon1, bon2, bon4, bon6, bon10;int c;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;printf("请输入利润i: ");scanf("%
21、ld",&i);c=i/100000;if(c>10) c=10;switch(c)case 0: bonus=1*0.1;break;case 1: bonus=bon1+(i-100000)*0.075;break;case 2 :case 3: bonus=bon2+(i-200000)*0.05; break;case 4:case 5: bonus=bon4+(i-400000)*0.03;break;case 6:case 7:case 8:case 9: bonus=bon6+(i-600000)*0.015;break;case 10: bonus=bo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 谭浩强 语言程序设计 第二 习题 答案
链接地址:https://www.31ppt.com/p-2386189.html