C语言程序设计第三版——谭浩强习题答案集.pdf
《C语言程序设计第三版——谭浩强习题答案集.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计第三版——谭浩强习题答案集.pdf(133页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 程序设计第三版课后习题答案全解File-New-Project在打开的New Project对话框中最左侧一栏中选择VisualC+下面的C L R,之后在其右侧的区域中选择CLR EmptyApplication并在下面的三个文本框中填入工程名称(Name),工程位置(Location)以及解决方案名称(Solution Name)之后单击OK然后可以解决方案浏览器中看到刚才新建的工程,右击工程名,选 择 Properties(属性),在打开的对话框中选择Configuration Properties(配置属性)下面的 General(一般),然后将右边对话框中的Common Lang
2、uage Runtime Support(CLR 支持)改为NoCommon Language Runtime Support”,然后点击确定退出接下来右击工程中的Source Files,选择Add-New Item.,在打开的对话框中选择 C+File(.cpp)n,并在下方输入一个以.c结尾的文件名,之后点击A dd,之后就可以在这个文件中加入C语言代码,按F5就可以调试运行了。1.5请参照本章例题,编写一个C程序,输出以下信息:!1!1*1*rj*rjw rjw rjw rjw rj rjw rjw rj rjw rjw rj rj rjw rj rj*rjwVery Good!1*!
3、*!*1*!1!1*1*rj*rjw rjw rjw rjw rj rjw rjw rj rjw rjw rj rj rjw rj rj*rjw解:main()pr jntf(*)printf(HnH);printf(HVery Good!nH);printf(HnH);printf(*”)1.6编写一个程序,输入a、b、c三个值,输出其中最大值。解:main()int a,b,c,max;printf(请输入三个数 a,b,c:nH);scanf(H%d,%d,%dH,&a,&b,&c);max=a;if(maxb)max=b;if(max c2 c3、c4、c 5分别变为,G:T、,n f
4、、T、并输出。解:#include main()char cl=,C,c2=,h,c3=,i,c4=,n,c5=,a,;cl+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(n 密码是%c%c%c%c%cn n,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.5,y=2.5(1)2.5(2)3.53.10写出程序运行的结果。main()inti=8;j=10;m=+i;
5、n=j+;printf(H%d,%d,%d,%dH,i,j,m,n);解:9,11,9,103.12写出下面表达式运算后a 的值,设原来a=12o设 a 和 n都已定义为整型变量。(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解:(1)24(2)10(3)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=128765,cl=W,c2=%想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。a=_3_ b=_4_ c=_
6、5x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ y+z=-1.20_ z+x=-2.40cl=x a x _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=,ac2=,b,;printf(Ha=%2d b=%2d c=%2dnH,a,b,c);printf(Hx=%f,y=%f,z=%fn ,x,y,z);printf(Hx+y=%5.2f y+z=%5.2f z+x=%5.2f
7、n*,x+y,y+z,z+x);printf(Hu=%61d n=%91dnH,u,n);printf(H%s%s%d%snH,Hcl=,a,H,HorH,cl,H(ASCII)H);printf(H%s%s%d%snH,Hc2=,a,H,HorH,c2,H(ASCII)H);)4.7用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82,cl=A ,c2二 a ,问在键盘上如何输入?main()(int a,b;float x,y;char clc2;scanf(Ha=%d_b=%dn,&a,&b);scanf(H_x=%f_y=%en,&x,&y);scanf(H_c
8、l=%c_c2=%cn,&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,Va,Vb;scanf(H%f,%fH,&r,&h);Cl=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf(HCl=%.2fnH,Cl);printf(HSa=%.2fnSb=%.2fnVa=%
9、.2fn Vb=%.2fn,1,Sa,Sb,Va,Vb);)4.9输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9输出要求有文字说明,取位2小数。main()float F,c;scanf(H%fH,&F);c=5*(F-32)/9;printf(Hc=%.2fH,c);)4.10编程序,用getchar函数读入两个字符给c l、c 2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1 )变 量c l、c 2应定义为字符型或整形?抑二者皆可?(2 )要求输出c l和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在
10、任何情况下都可以互相代替?如:char cl,c2;与int cl,c2;是否无条件的等价?#include*stdio.h*main()char cl,c2;cl=getchar();c2=getchar();putchar(cl);putchar(,n,);putchar(c2);putchar(,n,);#include*stdio.h1*main()char cl,c2;cl=getchar();c2=getchar();printf(Hcl=%d c2=%dnH,cl,c2);printf(,cl=%c c2=%cnH,cl,c2);)第五章5.1 什么是算术运算?什么是关系运算?什
11、么是逻辑运算?解:略。5.2 C语言中如何表示”真”和“假?系统如何判断一个量的“真”和“假”?解:设有一个逻辑表达式,若其结果为“真“,则以1表示;若其结果为“假“,则以0表示。但是判断一个逻辑量的值时,以0代表“真“,以非0代表“假。例如3&5的值为“真”,系统给出3&5的值为1。5.3 写出下面各逻辑表达式的值。设 a=3,b=4,c=5o(1)a+bc&b=c(2)allb+c&b-c(3)!(ab)&!clll(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,由键盘输入,输出其中最大的
12、数。解:方法一#include main()int a,b,c;printf(”请输入3个整数:”);scanf(H%d,%d,%dH,&a,&b,&c);if(ab)if(bc)printf(Hmax=%dnH,c);else printf(Hmax=%dnH,b);else if(ac)printf(*max=%dn H,c);else printf(Hmax=%dnH,a);方法二:使用条件表达式,可以使程序更加简明、清晰。程序如下:#include main()int a,b,c,temp,max;printf(”请输入3个整数:”);scanf(H%d,%d,%dH,&a,&b,&c
13、);temp=(ab)?a:b;/*将 a 和 b 中的大者存人temp中*/max=(tempc)?temp:c;/*将a和b中的大者与c比较,取最大者*/printf(n3 个整数的最大数是dn”,max);5.5 有一函数:写一程序,输入x 值,输出y 值。解:#include main()int x,y;printf(输入 x:”);scanf(H%dH,&x);if(xl)/*xl*/y=x;printf(Hx=%3d,y=x=%dnH,x,y);else if(x10)/*lx-10*/y=2*x-l;printf(Hx=%3d,y=2*x-l=%dnM,x,y);)else/*x
14、lO*/y=3*x-ll;printf(Hx=%3d,y=3*x-ll=%dnH,x,y);5.6 给一个百分制成绩,要求输出等级公,、E。90分 以 上 为 8090分为,BT 7079分为,CT 60分以下为。解:程序如下:#include main()float score;char grade;printf(”请输入学生成绩:”);scanf(H%fH,&score);while(score100ll(score0)printf(Hn输入有误,请重新输入:”);scanf(H%fH,&score);)switch(int)(score/10)case 10:case 9:grade=,
15、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*;)printf(成 绩 是 相 应 的 等 级 是 c。nn,score,grade);说明:对输入的数据进行检查,如小于0或大于1 0 0,要求重新输入。(int)(score/10)的作用是将(score/10)的值进行强制类型转换,得到一个整型值。5.7 给定一个不多于5 位的正整数,要求:求它是几位数;分别打印出每一位数字;按逆序
16、打印出各位数字。例如原数为3 2 1,应输出123。解:#include main()long int num;ini indiv,ten,hundredjhousand,ten_thousand,place;/*分W?别Ae代总表A*个?位?、隹十。?位?、隹百广位?、酒千心位?、怜万。位?和 位?数。y*/printf(请?输。?入”?一。?个?整?数。y(e;0-99999)e?:eo);scanf(%ld&num);while(num99999llnum9999)place=5:else if(num999)place=4;else if(num99)place=3;else if(n
17、um9)place=2;else place=1;printf(place=%dnH,place);ten_thousand=num/10000;thousand=num/1000%10;hundred=num/l 00%10;ten=num%100/10;indiv=num%10;switch(place)case 5:printf(n%d,%d,%d,%cl,%d,ten_thousand,thousand,hundred,ten,indiv);printf(n反口海序“。数。y字A?为a;g?);printf(%d%d%d%d%dn,indiv,ten,hundred,thousand,
18、ten_thousand);break;case 4:printf(%d,%d,%d,%d,thousand,hundred,tenjndiv);printf(n反口源序。数。y字A?为a:eo);printf(%d%d%d%dn,indiv,ten,hundred,thousand);break;case 3:printf(%d,%d,%d,hundred,ten,indiv);printf(n反a 源序。数。y字A?为a:eoM);printf(%d%d%dn,indiv,ten,hundred);break;case 2:printf(%d,%dn,ten,indiv);printf(n
19、反对总序“。数Oy字A?为a:eoH);printf(%d%(lnM,indiv,ten);break;case 1:printf(%dn,indiv);prinlf(n反口海序。数。y字A?为a:eon);printf(%dn,indiv);break;)scanf(%ld,&num);)5.8 企业发放的奖金根据利润提成。利润I 低于或等于10万元时,奖金可提成10%;利润高于10万元,低于20万元(1000001000000时,超 过 100万元的部分按1%提成。从键盘输入当月利润L求应发放奖金总数。要求:(1)用if语句编程序;用switch语句编程序。解:计算利润时,要特别注意不同利
20、润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按7.5%提成。(1)用if语句编程序。#include main()long i;float bonus,bonl,bon2,bon4,bon6,bonl0;bonl=100000*0.1;金*/bon2=bonl+100000*0.075;奖金*/bon4=bon2+200000*0.05;奖金*/bon6=bon4+200000*0.03;/*利润为10万元时的奖/*利 润 为2 0万元时的/*利 润 为4 0万元时的/*利 润 为6 0万元时的奖金*/bonl0=bon6+400000*0.015;奖
21、金*/*利 润 为100万元时的printf(请输入利润i:”);scanf(M%Id,&i);if(i=100000)bonus=i*0.1;0.1提成奖金*/else if(i=200000)bonus=bonl+(i-100000)*0.075;时的奖金*/else if(i=400000)bonus=bon2+(i-200000)*0.05;时的奖金*/else if(i=600000)bonus=bon4+(i-400000)*0.03;时的奖金*/else if(i bon2 bon4 bon6、honlO;然后再加上各区间附加部分的奖金。用 switch语句编程序。输入利润L 确
22、定相应的提成等级branch根据branch确定奖金值o 奖金=i*o.i1 奖金=bonl+(i-105)*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=bo
23、n4+200000*0.03;bonl0=bon6+400000*0.015;printf(”请输入利润i:”);scanf(M%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=bo
24、n6+(i-600000)*0.015;break;case 10:bonus=bonl0+(i-1000000)*0.01;)printf(n 奖金是%10.2fH,bonus);)5.9 输入4 个整数,要求按由大到小的顺序输出。解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。#include main()int t,a,b,c,d;printf(”请输入4个整数:”);scanf(H%d,%d,%d,%dH,&a,&b,&c,&d);printf(Hn a=%d,b=%d,c=%d,d=%dn*,a,b,c,d);if(ab)t=a;a=b;b=t
25、;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;b=d;d=t;if(cd)t=c;c=d;d=t;printf(排序结果如下:nn);printf(H%d,%d,%d,%dnH,a,b,c,d);)5.10 有4个圆塔,圆心分别为(2,2)、(-2,2)、(2,2)、(-2,-2),圆半径为1。这4个塔的高度分别为10m。塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。程序如下:#include main()int h=10;floatxl=2,yl=2,x2=-2,y2=2,x3=-2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 第三 谭浩强 习题 答案
限制150内