收藏 分享(赏)

C语言程序设计_谭浩强_第三版_课后习题答案new.docx

上传人:dreamzhangning 文档编号:2693594 上传时间:2018-09-25 格式:DOCX 页数:71 大小:54.10KB
下载 相关 举报
C语言程序设计_谭浩强_第三版_课后习题答案new.docx_第1页
第1页 / 共71页
C语言程序设计_谭浩强_第三版_课后习题答案new.docx_第2页
第2页 / 共71页
C语言程序设计_谭浩强_第三版_课后习题答案new.docx_第3页
第3页 / 共71页
C语言程序设计_谭浩强_第三版_课后习题答案new.docx_第4页
第4页 / 共71页
C语言程序设计_谭浩强_第三版_课后习题答案new.docx_第5页
第5页 / 共71页
点击查看更多>>
资源描述

1、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+=4;c4+=4;c5+=4;print

2、f(“密码是%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 写出下面表达式运算后 a 的值,设原来 a=12。设 a 和

3、 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.600000x+y=_3.600_ _y+z=-1.

4、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,n);printf(“%s %s %d

5、%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=%.2fn“,C1);printf(“S

6、a=%.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 ,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量 c1、c2 应定义为字符型或整形?抑二者皆可?(2)要求输出 c1 和 c2 值的 ASCII 码,应如何处理?用 putchar 函数还是 prin

7、tf 函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如: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“,c1,c2);第五章5.1 什

8、么是算术运算?什么是关系运算?什么是逻辑运算?解:略。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=(tempc)?temp:c; print

9、f(“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(“请输入一个整数( 099999):“);scanf

10、(“%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_thousand,thousand,hun

11、dred,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 反序数字为:“);prin

12、tf(“%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 万元的部分按 1%提成。从键盘输

13、入当月利润 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.03; bon10=bon6

14、+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) case 0: bonus=1

15、*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 输入 4 个整数,要求按由大到小的顺

16、序输出。解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。#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;printf(“排序结果如

17、下: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)+

18、(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);第六章第六章 循环控制6.1 输入两个正整数 m 和 n,求其最大公约数和最小公倍数。main()long m,n,i=1,j,s;scanf(“%ld,%ld“,for(;i=n) j=m;else j=n;for(;!(j%m=0j+);printf(“s=%ld,j=%ldn“,s,j);6.2 输入一行字符,分别统计出

19、其中英文字母、空格、数字和其他字符的个数。#include“stdio.h“main()char c;int i=0,j=0,k=0,l=0;while(c=getchar()!=n)if(c=65printf(“%.3fn“,x1);6.12 用牛顿迭代法求方程在 1.5 附近的根。main()double x,y;x=1.5;doy=2*x*x*x-4*x*x+3*x-6;x=x-y/(6*x*x-8*x+3);while(y!=0);printf(“x=%.3fn“,x);6.13 用二分法求方程在(-10,10)之间的根main()double x1,x2,y1,y2;x1=-10;x

20、2=10;doy1=2*x1*x1*x1-4*x1*x1+3*x1-6;x1=x1-y1/(6*x1*x1-8*x1+3);while(y1!=0);doy2=2*x2*x2*x2-4*x2*x2+3*x2-6;x2=x2-y2/(6*x2*x2-8*x2+3);while(y2!=0);printf(“x1=%.3f,x2=%.3fn“,x1,x2);6.14 打印以下图案* * * * * * * * * * * * * * * * * * *#include“math.h“main()int i,j,k;for(i=0;i=k+1) printf(“%5d“,ai);printf(“n“

21、);7.2 用选择法对 10 个整数从小到大排序。main() int i,j,a10,t;for(i=0;iai+1) t=ai+1;ai+1=ai;ai=t;for(i=0;iai+1) t=ai+1;ai+1=ai;ai=t;for(i=1;i0;i-)if(ai-1;i-)printf(“%5d“,bi);printf(“n“);7.6 打印出以下杨辉三角形(要求打印出 10 行) 。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 main()static int m,n,k,b1515;b01=1;for(m=1;mmain() int a1616,i,

22、i,k,p,m,n;p=1;while(p=1) printf(“Enter n(n=115) :“);scanf(“%d“,if(n!=0)printf(“输入一个 4*4 的数组nn“);for(i=0;i=ajk1)min=ajk1;k2=j;if(max!=min) flag=0;elseflag=1;printf(“%dn“,max);break;if(flag=0) printf(“不存在nn“);7-9#include void main()float a15=100,98,65,55,34,23,23,12,11,9,7,6,4,3,2,n;int i,low,high,mid

23、;printf(“原数组为:nn“);for(i=0;ivoid main()char a380;int i,j,upon=0,low=0,num=0,spa=0,oth=0;for(i=0;i=Afor(i=0;ivoid main()char a80,b80;int i,j;printf(“输入密码nn“);gets(a);for(i=0;i=A)int i,j,k;printf(“输入第 1 个字符串 nn“);gets(a);printf(“输入第 2 个字符串 nn“);gets(b);for(i=0;ivoid main()char a80,b80;int i,j,k;printf

24、(“输入第 1 个字符串 nn“);gets(a);printf(“输入第 2 个字符串 nn“);gets(b);for(i=0;(i0)printf(“nn 字符串 a 大于字符串 b:%4dnn“,k);break;else if(kvoid main()char s180,s280;int i,j;printf(“输入数组 s1nn“);gets(s1);printf(“输入数组 s2nn“);gets(s2);for(i=0;ivoid main()int max_div(int,int);int min_mul(int,int);int m,n;printf(“输入两个整数nn“)

25、;scanf(“%d%d“,if(max_div(m,n)=0) printf(“nn 无最大公约数为nn“);else printf(“nn 最大公倍数为: %dnn“,max_div(m,n);printf(“nn 最大公倍数为:%dnn“,min_mul(m,n);int max_div(int k1,int k2)int min(int,int);int i,k,flag;k=min(k1,k2);for(i=k;i1;i-)if(k1%i=0)flag=1;break;else flag=0;if(flag=0) return(0);int min_mul(int k1,int k2

26、)int max(int,int);int i,k;k=max(k1,k2);for(i=k;i+)if(i%k1=0)break;int min(int k1,int k2)int min;min=k1;if(k1k2) min=k2;return(min);int max(int k1,int k2)int max;max=k1;if(k1#include void main()void root1(float,float,float);void root2(float,float,float);void root3(float,float,float);float a,b,c,k;pri

27、ntf(“输入 a,b,c 的值nn“);scanf(“%f%f%f“,k=b*b-4*a*c;if(k0) root1(a,b,c);else if(k=0) root2(a,b,c);else root3(a,b,c);void root1(float a,float b,float c)float p,q;p=-b/(2*a);q=sqrt(b*b-4*a*c)/(2*a);printf(“nn 方程的两个根为:x1=%6.2f,x2=%6.2fnn“,p+q,p-q);void root2(float a,float b,float c)float p;p=-b/(2*a);print

28、f(“nn 方程的两个根为:x1=x2=%6.2fnn“,p);void root3(float a,float b,float c)float p,q;p=-b/(2*a);q=sqrt(-b*b+4*a*c)/(2*a);printf(“nn 方程的两个根为:x1=%6.2f+%6.2fi,x2=%6.2f-%6.2finn“,p,q,p,q);8-3#include void main()int prime(int);int x;printf(“输入一个正整数nn“);scanf(“%d“,if(prime(x)=0) printf(“nn 此数为素数nn“);else printf(“

29、nn 此数不是素数 nn“); int prime(int x)int i,flag;for(i=2;ivoid main()void exchange(int a33);int a33,i,j;printf(“输入一个 3*3 的矩阵nn“);for(i=0;ivoid main()void exchange(char str);char str80;printf(“输入一个字符串nn“);gets(str);exchange(str);printf(“nn 反序字符串为:nn“);puts(str);void exchange(char str)int i,j,k;char temp;fo

30、r(i=0;i+)if(stri=0) break;k=i/2;for(j=0;jvoid main()void strcat(char str1,char str2);char str180,str280;printf(“输入 str1nn“);gets(str1);printf(“nn 输入 str2nn“);gets(str2);strcat(str1,str2);printf(“nn 连接后的字符串为:nn“);puts(str1);void strcat(char str1,char str2)int i,j;for(i=0;i+)if(str1i=0)for(j=0;str2j!=

31、0;j+)str1i=str2j;i+=1;break;str1i=0;8-7#include void main()void strcpy(char str1,char str2);char str180,str280;printf(“输入 str2nn“);gets(str2);strcpy(str1,str2);printf(“nn 复制后的字符串为:nn“);puts(str1);void strcpy(char str1,char str2)int i,j=0;for(i=0;str2i!=0;i+)if(str2i=a)|(str2i=e)|(str2i=i)|(str2i=o)|

32、(str2i=u)str1j=str2i;j+;str1j=0;8-8#include void main()void stradd(char str);char str80;printf(“输入一串数字nn“);gets(str);stradd(str);printf(“nn 加空格后的字符串nn“);puts(str);void stradd(char str)char a80;int i=0,j;for(j=0;strj!=0;j+)ai=strj;ai+1= ;i+=2;ai=0;for(i=0;ai!=0;i+)stri=ai;stri=0;8-9#include void main

33、()void num(char str,int a);char str80;int a4=0;printf(“输入一个字符串nn“);gets(str);num(str,a);printf(“字母个数为: %dn“,a0);printf(“数字个数为: %dn“,a1);printf(“空格个数为: %dn“,a2);printf(“其它字符个数为: %dn“,a3);void num(char str,int a)int i,word=0,num=0,span=0,oth=0;for(i=0;stri!=0;i+)if(stri=Aelse if(stri= ) span+=1;else oth+=1;a0=word;a1=num;a2=span;a3=oth;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报