c语言程序设计第四版谭浩强课后习题答案.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《c语言程序设计第四版谭浩强课后习题答案.pdf》由会员分享,可在线阅读,更多相关《c语言程序设计第四版谭浩强课后习题答案.pdf(103页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言程序设计第四版谭浩强课后习题答案完整版热 度2已有6 5 9 8次阅读2011-12-28 12:221程序设计,完整版,C语言1.5 请参照本章例题,编写一个C程序,输出以下信息:Very Good!解:mian()*)printf(/znw);printf(Very Good!nz,);printf(n);printf(*)1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解:mian()int a,b,c,max;printf(“请输入三个数 a,b,c:n);scanf(d,%d,%d,&a,&b,&c);max=a;if(maxb)max=b;if(max c 5 五
2、个变量的值分别为,C J 句、T、W、H,经 过 运 算,使 c l、c2、c3、c4、c 5 分别变为,G、K nV、T、d,并输出。解:#include main()char cl=,C,c2=,h,/c3=,i,c4=,n/,c5=,a,;cl+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(密码是%c%c%c%c%cn,cl,c2,c3,c4,c5);运行结果:密码是Glmre3.9求下面算术表达式的值。(1)x+a%3*(int)(x+y)%2/4设 x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y设 a=2,b=3,x
3、=3.5,y=2.5(1)2.5(2)3.53.10写出程序运行的结果。main()int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(%d,%d,%d,%d”,i,j,m,n);解:9,11,9,103.12写出下面表达式运算后a 的值,设原来a=12。设 a 和 n 都已定义为整型变且里.O(1)a+=a(2)a-=2(3)a*=2+3(4)a/=a+a(5)a%=(n%=2),n 的值等于 5(6)a+=a-=a*=a解:24 10 60(4)0(5)0(6)0第四章4.4 若 a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=12
4、8765,cl=a c2=b。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。a=_3_ b=_4_ c=_5x=1.200000;y=2.400000zz=-3,600000 x+y=_3.600_ y+z=-1.20_ z+x=-2.40cl=a _or_97(ASCII)c2=b _or_98(ASCII)main()int a=3,b=4,c=5;long int u=51274,n=128765;float x=1.2,y=2.4,z=3.6;char cl=a,c2=b;printf(a=%2d b=%2d c=%2dn,a,b,c);printf(x=%f,y
5、=%f,z=%fn,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(%s%s%d%sn/cl=,a,or,cl,(ASCII);printf(%s%s%d%sn/c2=,a,or,c2,(ASCII);)4.7 用 scanf 下面的函数输入数据,使 a=3,b=7,x=8.5,y=71.82,cl=Ac2=a ,问在键盘上如何输入?main()int a,b;float x,y;char clc2;scanf(a=%d_b=%d,&a,&b);scanf(_
6、x=%f_y=%ez&x,&y);scanf(_cl=%c_c2=%c,&cl,&c2);a=3_b=7_x=8.5_y=71.82_cl=A_c2=a4.8 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。main()float r,h,Cl,Sa,Sb,V a,V b;scanf(%f/%f“,&r,&h);Cl=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;V a=4*3.14*r*r*r/3;V b=Sa*h;printf(,Cl=%.2fn/Cl);p
7、rintf(Sa=%.2fnSb=%.2fnV a=%.2fnV b=%.2fn,Sa,Sb/V a,V b);4.9 输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9输出要求有文字说明,取位2 小数。main()float F,c;scanf(%f,&F);c=5*(F-32)/9;printf(c=%.2f,c);)4.10编程序,用 getchar函数读入两个字符给c l、c 2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c l、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c l 和 c2 值的ASCII码,应如何处理?用 putchar函数还
8、是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:char cl,c2;与int cl,c2;是否无条件的等价?#includestdio.hmain()char cl,c2;cl=getchar();c2=getchar();putchar(cl);putchar(,n/);putchar(c2);putchar(,n,);)#includestdio.hmain()char cl,c2;cl=getchar();c2=getchar();printf(,cl=%d c2=%dn,cl/c2);printf(cl=%c c2=%cn,cl,c2);第五章5.1
9、什么是算术运算?什么是关系运算?什么是逻辑运算?解:略。5.2 C语言中如何表示 真 和 假?系统如何判断一个量的 真 和 假?解:设亳一个逻辑表达式,若其结果为 真,则以1 表示;若其结果为 假,则以。表示。但是判断一个逻辑量的值时,以0 代表 真,以非0 代表 假。例如3&5的值为 真,系统给出3&5的值为lo5.3 写出下面各逻辑表达式的值。设 a=3,b=4,c=5o a+bc&b=c(2)a 11 b+c&b-c!(ab)&!c|l(4)!(x=a)&(y=b)&0(5)!(a+b)+c-l&b+c/2解:(1)0(2)1(3)1(4)0(5)15.4 有 3 个整数a、b、c,由键
10、盘输入,输出其中最大的数。解:方法一#include main()int a,b,c;printf(“请输入3个整数:”);scanf(%d,%d,%cT,&a,&b,&c);if(ab)if(bc)printf(max=%dn/c);else printf(max=%dn,/b);else if(ac)printf(max=%dn,c);else printf(Hmax=%dnza);方法二:使用条件表达式,可以使程序更加简明、清晰。程序如下:#include main()int a,b,c,temp,max;printf(“请输入3个整数:”);scanf(“d,%d,%cT,&a,&b,
11、&c);temp=(ab)?a:b;/*将a和b中的大者存人temp中*/max=(tempc)?temp:c;/*将 a 和 b 中的大者与c 比较,取最大者*/printf(3个整数的最大数是dn,max);)5.5 有一函数:写一程序,输入x 值,输出y 值。解:#include main()int x,y;printf(输入 x:);scanf(%d,&x);if(xl)/*xl*/y=x;printf(x=%3d,y=x=%dn,x,y);)else if(x10)/*l10*/y=3*x-ll;printf(x=%3d,y=3*x-ll=%dn,x,y);)5,6给一个百分制成绩,
12、要求输出等级女制B,、9、D、乍 。90分以上为TV,8090分为E,7079分为C,60分以下为,D解:程序如下:#include main()float score;char grade;printf(”请输入学生成绩:”);scanf(%f,&score);while(score100|(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
13、;break;case 5:case 4:case 3:case 2:case 1:case 0:grade=E;)printf(c%5.1ff 相应的等级是c。n,score,grade);)说明:对输入的数据进行检查,如小于0 或大于100,要求重新输入。(intMscore/10)的作用是将(score/10)的值进行强制类型转换,得到一个整型值。5,7给定一个不多于5 位的正整数,要求:求它是几位数;分别打印出每一位数字;按逆序打印出各位数字。例如原数为3 2 1,应输出123。解:#include main()long int num;int indiv,ten,hundred,th
14、ousand;ten_thousand,place;/*分别代表个位、十位、百位、千位、万位和位数*/printf(”请输入一个整数(0-99999):);scanf(%ldz&num);if(num9999)place=5;else if(num999)place=4;else if(num99)place=3;else if(num9)place=2;else place=l;printf(place=%dnn,place);ten_thousand=num/10000;thousand=num/1000%10;hundred=num/100%10;ten=num%100/10;indiv
15、=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%dnJndiv/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;ca
16、se 3:printf(”d,%d,%d”,hundred,ten,indiv);printf(”n 反序数字为:);printf(%d%d%dn,indiv,ten,hundred);break;case 2:printf(%d,%d,tenzindiv);printf(”n 反序数字为:”);printf(,%d%dn,indiv,ten);break;case 1:printf(%d/indiv);printf(n反序数字为:);printf(%dn,indiv);break;)5.8企业发放的奖金根里利润提成。利 润I低于或等于1 0万元时,奖金可整成10%;利润高于10万元,低于2
17、0万元(1000001200000)时,其中10万元按10%提成,高 于1 0万元的部分,可提成7.5%;2000001400000时,其 中20万元仍按上述办法提成(下同),高于2 0万元的部分按5%提成;40000011000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:用if语句编程序;用switch语句编程序。解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按7.5%提成。用if语句编程序。#include main()long i;float bonus,bonl,bon2
18、,bon4,bon6,bonl0;bonl=100000*0.1;bon2=bonl+100000*0.075;bon4=bon2+200000*0.05;/*利润为10万元时的奖金*/*利润为20万元时的奖金*/*利润为4 0万元时的奖金*/bon6=bon4+200000*0.03;/*利润为60万元时的奖金*/bonl0=bon6+400000*0.015;/*利润为100万元时的奖金*/printf(请输入利润i:);scanf(%ld,&i);if(i=100000)bonus=i*0.1;/*利润在10万元以内按0.1提成奖金*/else if(i=200000)bonus=bon
19、l+(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(ibon2、bon4、bon6、honlO;然后再加上各区间附加部分的奖金。(2)用 switch语句编程序。输入利润i,确定相应的提成等级branch根据branch确定奖金值0 奖金=i*0.11 奖金=bonl+(i-105)
20、*0.0752 奖金=bon2+(i-2*105)*0.0534 奖金=bon4+(i-4*105)*0.0356 奖金=bon6+(i-6*105)*0.01578910 奖金=bonl0+(i-106)*0.01输出奖金#include main()long i;float bonus,bonl,bon2,bon4,bon6,bonlO;int c;bonl=100000*0.1;bon2=bonl+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bonl0=bon6+400000*0.015;printf(请输入利润i:“
21、);scanf(ld,&i);c=i/100000;if(c10)c=10;switch(c)case 0:bonus=l*0.1;break;case 1:bonus=bonl+(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=bonl0+(i-1000000)
22、*0.01;)printf(奖金是10.2f,bonus);)5.9输 入4个整数,要求按由大到小的顺序输出。解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。#include main()int t,a,b,c,d;printf(”请输入4个整 数:H);scanf(%d/%d,%d,%d/&a/&b,&c,&d);printf(n a=%d/b=%d/c=%d,d=%dn/a,b/c/d);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=a;b=c;c=t;if(bd)t=b;
23、b=d;d=t;if(cd)t=c;c=d;d=t;printf(排序结果如下:n);printf(%d,%d,%d,%dn,a,b,c,d);)5.1 0 有 4 个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1。这 4 个塔的高度分别为10mo 塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。程序如下:#include main()int h=10;float xl=2,yl=2,x2=-2,y2=2,x3=-2,y3=-2/x4=-2,y4=-2,x,y,dlzd2,d3,d4;printf(请输入一个点(x,y):);scan
24、f(%f,%f,&x,&y);dl=(x-xl)*(x-xl)+(y-yl)*(y-yl);/*求该点到各中心点的距离*/d2=(x-x2)*(x-x2)+(y+y2)*(y+y2);d3=(x+x3)*(x+x3)+(y-y3)*(y-y3);d4=(x+x4)*(x-x4)*(y+y4)*(y+y4);if(dll&d2l&d3l&d4l)h=0;/*判断该点是否在塔外*/printf(该点高度为5 己 方);弟 八 早第六章循环控制6.1 输入两个正整数m和n,求其最大公约数和最小公倍数。main()long m,nj=lj,s;scanf(ld%lcT,&m,&n);for(;i=m&
25、i=n)j=m;else j=n;for(;!(j%m=0&j%n=0);j+);printf(,s=%ld,j=%ldn,/s,j);6.2 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#includestdio.hmain()char c;int i=O,j=O,k=O,l=O;while(c=getchar()!=?n,)if(c=65&c=97&c=48&c=57)j+;else if(c=32)k+;else 1+;printf(i=%d/j=%d/k=%dj=%dn,zij,kj);6.3 求 Sn=a+aa+aaa+.+aa.aaa(有 n 个 a)之值,其
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 第四 版谭浩强 课后 习题 答案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内