1、C 语言程序设计(第三版)谭浩强课后习题答案1.5 请参照本章例题,编写一个 C 程序,输出以下信息:*Very Good!*解:mian()printf(“*”);printf(“n”);printf(“Very Good!n”);printf(“n”);printf(“*”);1.6 编写一个程序,输入 a、b、c 三个值,输出其中最大值。解:mian()int a,b,c,max;printf(“请输入三个数 a,b,c:n”);scanf(“%d,%d,%d”,max=a;if(maxmain() char c1=C,c2=h,c3=i,c4=n,c5=a;c1+=4;c2+=4;c3
2、+=4;c4+=4;c5+=4;printf(“密码是%c%c%c%c%cn“,c1,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()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 写出下面表达式运算后
3、a 的值,设原来 a=12。设 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第四章44 若 a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6 ,u=51274,n=128765,c1=a ,c2=b 。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出) 。a=_3_ _b=_4_ _c=_5x=1.200000,y=2.400000,z=-3.600000
4、x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40c1=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 c1=a,c2=b;printf(“a=%2d b=%2d c=%2dn“,a,b,c);printf(“x=%f,y=%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
5、,n);printf(“%s %s %d%sn“,“c1=a“,“or“,c1,“(ASCII)“);printf(“%s %s %d%sn“,“c2=a“,“or“,c2,“(ASCII)“);47 用 scanf 下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82 , c1=A,c2=a,问在键盘上如何输入?main()int a,b;float x,y;char c1c2;scanf(“a=%d_b=%d“,scanf(“%f,%f“,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=%
6、.2fn“,C1);printf(“Sa=%.2fnSb=%.2fnVa=%.2fnVb=%.2fn“,Sa,Sb,Va,Vb);49 输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9输出要求有文字说明,取位 2 小数。main()float F,c;scanf(“%f“,c=5*(F-32)/9;printf(“c=%.2f“,c);410 编程序,用 getchar 函数读入两个字符给 c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:()变量 c1、c2 应定义为字符型或整形?抑二者皆可?()要求输出 c1 和 c2 值的 ASCII 码,应如何处理?用 p
7、utchar 函数还是 printf 函数?()整形变量与字符变量是否在任何情况下都可以互相代替?如:char c1 ,c2;与int c1,c2;是否无条件的等价?#include“stdio.h“main()char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(n);putchar(c2);putchar(n);#include“stdio.h“main()char c1,c2;c1=getchar();c2=getchar();printf(“c1=%d c2=%dn“,c1,c2);printf(“c1=%c c2=%cn“,
8、c1,c2);第五章5.1 什么是算术运算?什么是关系运算?什么是逻辑运算?解:略。5.2 C 语言中如何表示“真” 和“假”?系统如何判断一个量的“真”和“假”?解:设有一个逻辑表达式,若其结果为“真” ,则以 1 表示;若其结果为“假” ,则以 0 表示。但是判断一个逻辑量的值时,以 0 代表“真” ,以非 0 代表“假” 。例如 3printf(“请输入 3 个整数:“);scanf(“%d,%d,%d“,if(amain() int a,b,c,temp,max;printf(“请输入 3 个整数:“);scanf(“%d,%d,%d“,temp=(ab)?a:b; max=(temp
9、c)?temp:c; printf(“3 个整数的最大数是%dn”,max);5.5 有一函数:写一程序,输入 x 值,输出 y 值。解: #include main()int x,y;printf(“输入 x:“);scanf(“%d“,if(xmain() float score;char grade;case 2:printf(“请输入学生成绩:“);scanf(“%f“,while(score100|(scoremain() long int num;int indiv,ten,hundred,thousand,ten_thousand,place;printf(“请输入一个整数(09
10、9999):“);scanf(“%ld“,if (num9999) place=5;else if(num999) place=4;else if(num99) place=3;else if(num9) 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_thousan
11、d,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;case 3: printf(“%d,%d,%d“,hundred,ten,indiv);printf(“n
12、 反序数字为:“);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(“n 反序数字为:“);printf(“%dn“,indiv);break;5.8 企业发放的奖金根据利润提成。利润 I 低于或等于 10 万元时,奖金可提成 10% ;利润高于 10 万元,低于 20 万元(1000001000000 时,超过 100 万
13、元的部分按 1%提成。从键盘输入当月利润 I,求应发放奖金总数。要求: (1)用 if 语句编程序;(2)用 switch 语句编程序。解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为 15 万元,其中有10 万元按 10%的比例提成,另外 5 万元则按 7.5%提成。(1) 用 if 语句编程序。#include main() long i;float bonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1; bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0
14、.03; bon10=bon6+400000*0.015; printf(“请输入利润 i:“);scanf(“%ld“,if(imain() 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(“%ld“,c=i/100000;if(c10) c=10;switch(c)
15、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=bon10+(i-1000000)*0.01;printf(“奖金是%10.2f“,bonus);5.9 输入
16、4 个整数,要求按由大到小的顺序输出。解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。#include main() int t,a,b,c,d;printf(“请输入 4 个整数:“);scanf(“%d,%d,%d,%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; b=d; d=t;if(cd) t=c; c=d; d=t
17、;printf(“排序结果如下:n“);printf(“%d, %d, %d, %dn“,a,b,c,d);5.10 有 4 个圆塔,圆心分别为(2 ,2)、(-2,2) 、(2,-2)、(-2,-2) ,圆半径为 1。这 4 个塔的高度分别为 10m。塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。程序如下:#include main() int h=10;float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4;printf(“请输入一个点(x,y):“);scanf(“%f,%f“,d1=(x-x1)*(x-x1)+(y-y1)*(y-y1); 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(d11 printf(“该点高度为%dn“,h);
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。