C语言程序设计方案第三版谭浩强课后习题答案完整版 .docx
精品名师归纳总结1.5#include <stdio.h> void mainprintf"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n"。printf"Very good.n"。printf"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n"。1.6#include <stdio.h> void mainfloat maxfloat x,float y,float z。float a,b,c 。printf" 请分别输入 a,b,c:n" 。scanf"%f,%f,%f",&a,&b,&c。printf"max=%f",maxa,b,c。float maxfloat x,float y,float zfloat m,n 。m=x>y. x: y 。n=m>z. m: z 。returnn 。3.6#include <stdio.h> void mainchar c1= a ,c2= b ,c3= c ,c4=101 ,c5= 116。printf “ a%c b%ctc%ctabcn ” ,c1,c2,c3。printf “ tb%c %cn ” ,c4,c5。可编辑资料 - - - 欢迎下载精品名师归纳总结3.9.1#include <stdio.h> void maindouble x=2.5,y=4.7,z 。int a=7 。z=x+a%3*intx+y%2/4。printf" 该表达式的值为:%f",z 。3.9.2#include <stdio.h> void mainint a=2,b=3 。float x=3.5,y=2.5,z 。z=floata+b/2+intx%inty。printf" 该表达式的值为:%f",z 。4.5#include <stdio.h> void mainint a=5,b=7。double x=67.8564,y=-789.124。char c='A'。long n=1234567。unsigned u=65535。printf"%d%dn",a,b。printf"%3d%3dn",a,b。printf"%f,%fn",x,y。printf"%-10f,%-10fn",x,y。printf"%8.2f,%8.2f,%.4f,%.4f,%3f,%3fn",x,y,x,y,x,y。printf"%e,%10.2en",x,y。printf"%c,%d,%o,%xn",n,n,nprintf"%ld,%lo,%xn",n,n,n。printf"%u,%o,%x,%dn",u,u,u,u。可编辑资料 - - - 欢迎下载精品名师归纳总结printf"%s,%5.3sn","COMPUTER","COMPUTER"。4.6#include <stdio.h> void mainint a,b。float x,y。char c1,c2。scanf"a=%d b=%d",&a,&b。scanf" %f %e",&x,&y scanf" %c %c",&c1,&c2。4.7#include<stdio.h> void mainint a,b。 float x,y,z。char c1,c2。scanf"%5d%5d",&a,&b。scanf"%f%f%*f%f",&x,&y,&z。scanf"%c%c",&c1,&c2。4.8#include <stdio.h> #define pi 3.14 void mainfloat r,h,l,s1,s2,v1,v2。可编辑资料 - - - 欢迎下载精品名师归纳总结printf"请输入 r ,h的值: n"。scanf"%f,%f",&r,&h。l=2*pi*r。s1=pi*r*r。s2=4*s1 。v1=4/3*pi*r*r*r。v2=s1*h。printf"圆周长为: %.2fn",l。printf"圆面积为: %.2fn",s1。printf"圆球表面积为: %.2fn",s2。printf"圆球体积为: %.2fn",v1。printf"圆柱体积为: %.2fn",v2。5.5 #include <stdio.h> void mainfloat x,y 。printf" 请输入 x 的值: n" 。scanf"%f",&x 。ifx<1 y=x 。elseifx>=1&&x<10 y=2*x-1 。elsey=3*x-11 。printf"x与 y 的值分别为: n%f,%f",x,y 。printf"n" 。5.6 #include <stdio.h> void main可编辑资料 - - - 欢迎下载精品名师归纳总结int a。float b 。可编辑资料 - - - 欢迎下载精品名师归纳总结printf" 请输入该同学的成果:n" 。scanf"%f",&b 。while b<0|b>100printf" 输入有误,请重新输入:n" 。scanf"%f",&b 。a= intb/10 。ifa<6 a=5 。switchacase 10:case 9: printf" 该同学为等级: A" 。 break。case 8: printf" 该同学为等级: B" 。break。case 7: printf" 该同学为等级: C" 。break。case 6: printf" 该同学为等级: D" 。 break。case 5: printf" 该同学为等级: E"。break。#include <stdio.h> #include <math.h>void mainint x,y,m,n,i=1,j=0 。printf" 请给出一个不多于5位的正整数 :n" 。scanf"%d",&x 。whilex<=0|x>=100000printf" 输入有误 n 请给出一个不多于5位的正整数 :n" 。scanf"%d",&x 。forn=0 。 n<5。n+y=intx/pow10,n 。可编辑资料 - - - 欢迎下载精品名师归纳总结ify>0&&y<10 m=n+1 。printf" 它是 %d 位数n",m 。printf" 从高到低位依次为 n" 。doprintf" %d",intx/pow10,m-i%10。i+ 。whilem-i>=0 。printf"n逆序输出为 n" 。do可编辑资料 - - - 欢迎下载精品名师归纳总结whilej-m<0 。printf" %d",intx/pow10,j%10。j+ 。可编辑资料 - - - 欢迎下载精品名师归纳总结printf"n" 。6.1 输入两个正整数 m 和 n,求其最大公约数和最小公倍数。#include <stdio.h> void mainint m,n,i,j 。printf" 请分别输入 m,n 的值: n"。scanf"%d,%d",&m,&n 。fori=1。i<=m 。i+ifm%i=0&&n%i=0可编辑资料 - - - 欢迎下载精品名师归纳总结j=i。printf" 这两个整数的最大公约数是: %d",j 。fori=j 。i+ifi%m=0&&i%n=0 break 。printf" 这两个整数的最小公倍数数是:%d",i 。printf"n" 。6.2 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#include <stdio.h> void mainint i=0,j=0,k=0,x=0 。char c。printf" 请输入一行字符串: n"。whilec=getchar.='n'ifc>='A'&&c<='Z'|c>='a'&&c<='z' i+。else ifc=' ' j+。else ifc>='0'&&c<='9' k+ 。else x+。printf"英 文 字 母 、 空 格 、 数 字 、 其 他 字 符 的 个 数 分 别为: %d,%d,%d,%d,",i,j,k,x 。printf"n" 。可编辑资料 - - - 欢迎下载精品名师归纳总结6.3 求 Sn=a+aa+aaa+aa a 之值,其中 a 是一个数字。例如: 222222 222222222(此时 n 5), n 由键盘输入。#include<stdio.h> #include<math.h> void mainint i,n 。int sum=0,s=0。printf" 请输入 n 的值: n" 。scanf"%d",&n。whilen<1printf" 请重新输入 n 的值: n"。scanf"%d",&n。fori=0 。i<n 。i+s+=pow10,i。sum+=2*s。printf"sum=%dn",sum 。6.8题目:有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,求出这个数列的前20 项之和。#include<stdio.h>void mainint a=1,b=1,i。float sum=0.0。fori=0。i<20 。i+可编辑资料 - - - 欢迎下载精品名师归纳总结a=a+b 。b=a-b。sum+=floata/b。printf"这个数列前二十项之和为: n%f",sum 。printf"n"。7.2#include<stdio.h> void main int i,j,t,a10。printf" 请输入十个整数:n" 。fori=0 。i<10 。i+scanf"%d",&ai。forj=1 。j<10 。j+ fori=0 。i<10-j 。i+ifai<ai+1t=ai 。ai=ai+1 。ai+1=t 。printf" 这十位数从大到小排列为:fori=0 。i<10 。i+n" 。printf"%5d",ai。printf"n" 。7.3#include<stdio.h> void mainint i,j,m,n,a33。printf" 请输入 3*3 的整形矩阵 n" 。可编辑资料 - - - 欢迎下载精品名师归纳总结fori=0 。i<3 。i+ forj=0 。j<3 。j+ scanf"%d",&aij。m=a00+a11+a22。n=a02+a11+a20。7.4#include<stdio.h> void mainstatic int a10=1,5,6,10,20,24,55,58,64。int i,t 。printf" 请输入一个数: n" 。scanf"%d",&a9。fori=9 。 i>0 。i- ifai<ai-1t=ai-1 。ai-1=ai 。ai=t 。fori=0 。i<10 。i+ printf"%4d",ai。printf"n" 。printf"3*3的整形矩阵对角线元素之和为:n" 。printf"%d,%d",m,n。7.8#include<stdio.h> void mainint a55,b5,c5,d55。int i,j,k,l 。printf" 请输入 5*5 的整型数组 n" 。fori=0 。i<5 。 i+forj=0 。j<5 。 j+可编辑资料 - - - 欢迎下载精品名师归纳总结scanf"%d",&dij。fori=0 。i<5 。i+ forj=0 。j<5 。j+ aij=dij。fori=0,k=0 。i<5 。i+,k+forj=0 。j<4 。j+ifaij>=aij+1bk=aij+1=aij。elsebk=aij+1。forj=0,l=0 。j<5 。j+,l+ fori=0 。i<4 。i+ifaij<=ai+1jcl=ai+1j=aij。else cl=ai+1j。fori=0,k=0 。i<5 。i+,k+ forj=0,l=0 。 j<5 。j+,l+ ifdij-bk=0ifdij-cl=0printf" 鞍点为 d%d%d=%dn",i,j,dij。elseprintf" 没有鞍点 n" 。7.10#include<stdio.h> #include<string.h> void mainint i,j=0,k=0,l=0,m=0,n=0。char str0301,str1100,str2100,str3100。可编辑资料 - - - 欢迎下载精品名师归纳总结getsstr1。getsstr2。getsstr3。strcatstr0,str1 。strcatstr0,str2。strcatstr0,str3。fori=0 。str0i.='0' 。i+ifstr0i>='A'&&str0i<='Z' j+。else ifstr0i>='a'&&str0i<='z' k+。else ifstr0i>='0'&&str0i<='9' l+。else ifstr0i=' ' m+。else n+。printf" 大写字母、小写字母、数字、空格以及其他字符的个数依次为:n" 。printf"%5d %7d %5d %6d %4dn",j,k,l,m,n。printf"n" 。 7.14#include <stdio.h> #include <string.h>void mainint i=0,resu 。char s1100,s2100 。printf"n请输入 string1 : "。getss1。printf"n请输入 string2 : "。getss2。whiles1i=s2i&&s1i.='0'i+ 。ifs1i='0'&&s2i='0' resu=0。else resu=s1i-s2i 。printf"n result : %dn",resu 。8.1#include<stdio.h>可编辑资料 - - - 欢迎下载精品名师归纳总结void mainint maxgyint m,int n 。int mingbint o,int p 。int a,b 。printf" 请输入两个正整数: a,bn" 。scanf"%d,%d",&a,&b 。whilea<=0|b<=0printf" 注:请输入两个正整数:a,bn" 。scanf"%d,%d",&a,&b。printf" 这两个数的最大公约数是:%d",maxgya,b 。printf" 这两个数的最小公倍数是:%d",mingba,b 。printf"n" 。int maxgyint m,int nint i,k 。fori=1 。i<=m 。i+ ifm%i=0&&n%i=0k=i 。return k 。intmingbint o,int pint j 。forj=o 。 j+ifj%o=0&&j%p=0 break。return j 。8.3#include<stdio.h> void mainint judssint m 。int a。可编辑资料 - - - 欢迎下载精品名师归纳总结printf" 请输入一个正整数: "。scanf"%d",&a 。whilea<=0printf" 注:请输入一个正整数:"。scanf"%d",&a 。judssa。printf"n" 。int judssint mint i 。fori=2 。i<m 。i+ifm%i=0 break 。ifi<mreturn printf" 这个数不是素数 "。elsereturn printf" 这个数是素数 " 。8.5#include<stdio.h> #include<string.h>void mainchar fxchar str1100 。char str0100 。printf" 请输入一个字符串:n" 。getsstr0。fxstr0 。putsstr0 。char fxchar str1100 int i,j,k=strlenstr1。char str2100 。strcpystr2,str1 。fori=0,j=k-1 。j>-1 。i+,j- str1i=str2j 。可编辑资料 - - - 欢迎下载精品名师归纳总结return str1100 。可编辑资料 - - - 欢迎下载