2022年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 ;欢迎下载