C语言程序设计(第三版)课后习题答案.doc_第1页
C语言程序设计(第三版)课后习题答案.doc_第2页
C语言程序设计(第三版)课后习题答案.doc_第3页
C语言程序设计(第三版)课后习题答案.doc_第4页
C语言程序设计(第三版)课后习题答案.doc_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序设计(第三版)答案-谭浩强程序是在VC6.0下编译的,所以头文件和TC的不太一样!4-8#include #define pi 3.1415void main()float r,h,rl,ra,ss,sv,cv;printf(输入圆的半径和圆柱的高nn);scanf(%f%f,&r,&h);rl=2*pi*r;ra=pi*r*r;ss=4*pi*r*r;sv=4*pi*r*r*r/3;cv=ra*h;printf(圆周长为:%fnn圆面积为:%fnn圆球表面积为:%fnn圆球体积为:%fnn圆柱体积为:%fnn,rl,ra,ss,sv,cv);4-9#include void main()float F,c;printf(输入一个华氏温度nn);scanf(%f,&F);c=5*(F-32)/9;printf(摄氏温度为:%.2fnn,c);第五章5-4#include void main()int a,b,c,max;printf(输入三个整数a,b,cnn);scanf(%d%d%d,&a,&b,&c);if(ab) max=a;else max=b;if(maxc) max=c;printf(最大的数为:%dnn,max);5-5#include void main()float x,y;printf(输入xnn);scanf(%f,&x);if(x1) y=x;else if(x10) y=2*x-1; else y=3*x-11; printf(y=%fnn,y);5-6#include void main()float m;int n;printf(输入成绩nn);scanf(%f,&m);n=m/10;switch(n)case 0:case 1: case 2:case 3: case 4:case 5:printf(Enn);break;case 6:printf(Dnn);break;case 7:printf(Cnn);break;case 8:printf(Bnn);break;case 9:case 10:printf(Ann);break;5-7#include #include void main()int a,b,c,i,j,n;printf(输入五位正整数nn);scanf(%d,&a);printf(nn);c=a; for(i=1;i+)b=c%10;c=c/10;printf(%d,b);if(c=0)printf(nn);printf(正整数为%d位数nn,i);break;c=a;for(j=i-1;j=0;j-)n=pow(10,j);b=c/n;c=c%n;printf(%dn,b);5-8if语句:#include void main()int I;float bonus;printf(输入当月利润Inn);scanf(%d,&I);if(I=100000) bonus=I/10;else if(I=200000) bonus=10000+(I-100000)*7.5/100; else if(I=400000) bonus=10000+7500+(I-200000)*5/100; else if(I=600000) bonus=10000+7500+10000+(I-400000)*3/100; else if(I=1000000) bonus=10000+7500+10000+6000+(I-600000)*1.5/100; else bonus=10000+7500+10000+6000+6000+(I-1000000)*1/100;printf(应发奖金数为:%fnn,bonus);switch语句:#include void main()int I,n;float bonus;printf(输入当月利润Inn);scanf(%d,&I);if(I1000000) n=10;else n=I/100000;switch(n)case 0:bonus=I/10;break;case 1:bonus=10000+(I-100000)*7.5/100;break;case 2: case 3:bonus=10000+7500+(I-200000)*5/100;break;case 4:case 5:bonus=10000+7500+10000+(I-400000)*3/100;break;case 6:case 7:case 8:case 9:bonus=10000+7500+10000+6000+(I-600000)*1.5/100;break;case 10:bonus=10000+7500+10000+6000+6000+(I-1000000)*1/100;break;printf(应发奖金数为:%fnn,bonus);5-9#include void main()int a,b,c,d,temp,min;printf(输入四个数a,b,c,dnn);scanf(%d%d%d%d,&a,&b,&c,&d);if(ab)temp=a;a=b;b=temp;if(ac)temp=a;a=c;c=temp;if(ad)temp=a;a=d;d=temp;printf(由小到大排列为:nn);printf(%d ,a);if(bc)temp=b;b=c;c=temp;if(bd)temp=b;b=d;d=temp;printf(%d ,b);if(cd)temp=c;c=d;d=temp;printf(%d ,c);printf(%d,d);5-10#include #include void main()float x,y,a,b,c,d;printf(输入点的坐标nn);scanf(%f%f,&x,&y);a=sqrt(2-x)*(2-x)+(2-y)*(2-y);b=sqrt(2-x)*(2-x)+(-2-y)*(-2-y);c=sqrt(-2-x)*(-2-x)+(-2-y)*(-2-y);d=sqrt(-2-x)*(-2-x)+(2-y)*(2-y);if(a=1|b=1|c=1|d=1) printf(该点建筑高度为:10m);else printf(该点建筑高度为:0m);第六章:6-1#include #include void main()int m,n,max,min,i,k;printf(输入两个正整数nn);scanf(%d%d,&m,&n);if(mn) k=n;else k=m;for(i=1;in) k=m;else k=n;for(i=k;i+)if(i%m=0)&(i%n=0)min=i;break;printf(最小公倍数为:%dnn,min);6-2#include void main()char c;int l=0,b=0,n=0,e=0;printf(输入一行字符nn);while(c=getchar()!=n)if(c=a&c=A&c=48&c=57) n+=1; else e+=1;printf(英文字母个数为:%dnn空格个数为:%dnn数字个数为:%dnn其他字符个数为:%dnn,l,b,n,e);6-3#include #include void main()int n,k,i;float a,s=0;printf(输入n和ann);scanf(%d%f,&n,&a);for(i=0;in;i+)k=pow(10,i);s=s+(n-i)*a*k;printf(和s=%fnn,s);6-4#include void main()int n,s,S=0,i,j;printf(输入nnn);scanf(%d,&n);for(i=1;j=n;i+)s=1;for(j=1;j=i;j+)s=s*j;S+=s;printf(和S=%dnn,S);6-5#include void main()int i,m,n,t;int s1=0,s2=0;float s3=0,s,l;printf(输入m,n,t的值nn);scanf(%d%d%d,&m,&n,&t);for(i=1;i=m;i+)s1+=i;for(i=1;i=n;i+)s2+=i*i;for(i=1;i=t;i+)l=1.0/i;s3+=l;s=s1+s2+s3;printf(和s=%f,s);6-6#include void main()int m,n,k,i,j;printf(水仙花数为:n);for(i=100;i=999;i+)j=i;m=j%10;j=j/10;n=j%10;k=j/10;if(i=m*m*m+n*n*n+k*k*k) printf(%d ,i);6-7#include #include void main()int i,j,k,s;for(i=1;i=1000;i+)s=0;for(j=1;ji;j+)if(i%j=0) s+=j;if(s=i)printf(nn);printf(%d its factors are ,i);for(j=1;ji;j+)if(i%j=0) printf(%d ,j);6-8#include void main()int n,i;float f1,f2,s,temp;printf(输入nnn);scanf(%d,&n);f1=2.0;f2=3.0;s=f1;for(i=1;i=n-1;i+)s+=f2/f1;temp=f2;f2=f1+f2;f1=temp;printf(前%d项和为%f,n,s);6-9#include #include void main()int i,n,l=100;float m,s=0;printf(输入nnn);scanf(%d,&n);m=l;for(i=1;i=n;i+)s+=2*m;m=m*0.5;printf(第%d次落地时经过%f米nn,n,s-l);printf(第%d次落地后反弹%f米nn,n,m);6-10#include void main()int m=1,n,i;printf(输入nnn);scanf(%d,&n);for(i=1;in;i+)m=(m+1)*2;printf(一共摘了%d个桃子nn,m);6-11#include #include void main()float a,x1,x2;printf(输入ann);scanf(%f,&a);x1=a/2;loop:x2=(x1+a/x1)/2;if(fabs(x1-x2)1e-5)x1=x2;goto loop;else printf(nna的平方根为%fnn,x2);6-12#include #include void main()float f(float); float xpoint(float,float); float root(float,float);float x,x1,x2,f1,f2;doprintf(输入x1,x2nn);scanf(%f%f,&x1,&x2);f1=f(x1);f2=f(x2);while(f1*f20);x=root(x1,x2);printf(方程在1.5附近的根为:%fnn,x);float f(float x)float y;y=2*x*x*x-4*x*x+3*x-6;return(y);float xpoint(float x1,float x2)float y;y=(x1*f(x2)-x2*f(x1)/(f(x2)-f(x1);return(y);float root(float x1,float x2)float x,y,y1;y1=f(x1);dox=xpoint(x1,x2);y=f(x);if(y*y10)y1=y;x1=x;elsex2=x;while(fabs(y)1e-4);return(x);6-13#include #include void main()float f(float);float root(float,float);float x,x1,x2,f1,f2;doprintf(输入x1,x2nn);scanf(%f%f,&x1,&x2);f1=f(x1);f2=f(x2);while(f1*f20);x=root(x1,x2);printf(方程的根为:%fnn,x);float f(float x)float y;y=2*x*x*x-4*x*x+3*x-6;return(y);float root(float x1,float x2)float x,y;doy=f(x1+x2)/2);if(y1e-4)x2=(x1+x2)/2;else x=(x1+x2)/2;while(fabs(y)1e-4);return(x);6-14#include void main() int i,j,k; for(i=0;i=3;i+) for(j=0;j=2-i;j+) printf( ); for(k=0;k=2*i;k+) printf(*); printf(n); for(i=0;i=2;i+) for(j=0;j=i;j+)printf( ); for(k=0;k=4-2*i;k+)printf(*); printf(n); 6-15#include void main()char i,j,k;for(i=X;i=Z;i+)for(j=X;j=Z;j+)if(i!=j)for(k=X;k=Z;k+)if(i!=k&j!=k)if(i!=X&k!=X&k!=Z)printf(nA-%cnB-%cnC-%cn,i,j,k);第七章7-1#include #include void main()int i,j;int a101;printf(素数为:nn);for(i=1;i=100;i+)ai=i;for(i=3;i=100;i+)for(j=2;j=sqrt(ai);j+)if(ai%j=0)ai=0;break;for(i=2;i=100;i+)if(ai!=0) printf(%d ,ai);7-2#include void main()int a10,i,j,temp;printf(输入10个整数nn);for(i=0;i10;i+)scanf(%d,&ai);for(i=0;i10;i+)for(j=i+1;jaj)temp=ai;ai=aj;aj=temp;printf(排序后的输出为:nn);for(i=0;i10;i+)printf(%d ,ai);printf(nn);7-3#include void main()int a9,i,s=0;printf(输入一个3*3整型矩阵nn);for(i=0;i9;i+)scanf(%d,&ai);for(i=0;i9;i+=4)s+=ai;printf(对角线元素之和为:%dnn,s);7-4#include void main()int a11=1,2,3,4,5,6,7,8,9,10;int i,j,n,temp1,temp2;printf(输入一个数nnn);scanf(%d,&n); if(a0-a9)0)if(n=a9)a10=n;elsefor(i=0;i10;i+)if(ain)temp1=ai;ai=n;for(j=i+1;j0)if(n=a9)a10=n;elsefor(i=0;in)temp1=ai;ai=n;for(j=i+1;j11;j+)temp2=aj;aj=temp1;temp1=temp2;break;for(i=0;i11;i+)printf(%d ,ai);7-5#include #define N 5void main()int aN;int i,temp;printf(输入5个个数nn);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;i=N/2;i+)temp=ai;ai=aN-i-1;aN-i-1=temp;for(i=0;iN;i+)printf(%d ,ai);printf(nn);7-6#include #include void main()int a1010=1;int i,j;for(i=1;i10;i+)for(j=0;j=i;j+)ai0=ai-10;aij=ai-1j-1+ai-1j;for(i=0;i10;i+)for(j=0;j=i;j+)printf(%4d,aij);printf(nn);7-7#include #define N 7void main()int aNN=0;int i,j,k;i=0;j=(N-1)/2;aij=1;for(k=2;k=N*N;k+)i=i-1;j=j+1;if(iN-1)i=i+2;j=j-1;elseif(iN-1) j=0;if(aij=0)aij=k;elsei=i+2;j=j-1;aij=k;for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,aij);printf(nn);7-8#include void main()int a44,i,j,max,min,k1,k2,flag;printf(输入一个4*4的数组nn);for(i=0;i4;i+)for(j=0;j4;j+)scanf(%d,&aij);printf(鞍点为:nn);for(i=0;i4;i+)max=ai0;for(j=0;j4;j+)if(max=aij)max=aij;k1=j;min=a0k1;for(j=0;j=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;printf(原数组为:nn);for(i=0;i15;i+)printf(%6.2f,ai);printf(nn输入一个数nnn);scanf(%f,&n);low=0;high=14;i=0;while(low=high)mid=(low+high)/2;if(amid=n)printf(该数是数组中第%d个元素nn,mid+1);i+;break;else if(amidn) high=mid-1;else low=mid+1;if(i=0) printf(无此数!nn);7-10#include void main()char a380;int i,j,upon=0,low=0,num=0,spa=0,oth=0;for(i=0;i3;i+)printf(输入第%d行文字nn,i);gets(ai);for(j=0;j=A&aij=a&aij=48&aij=57) num+=1;else if(aij= ) spa+=1;else oth+=1;printf(英文大写字母:%d个nn,upon);printf(英文小写字母:%d个nn,low);printf(数字: %d个nn,num);printf(空格: %d个nn,spa);printf(其他字符: %d个nn,oth);7-11#include void main()int i,j;for(i=0;i5;i+)for(j=0;j=i;j+)printf( );for(j=i;ji+5;j+)printf(* );printf(n);7-12#include void main()char a80,b80;int i,j;printf(输入密码nn);gets(a);for(i=0;i=A)&(ai=a)&(ai=z)bi=219-ai;else bi=ai;bi=0;printf(密文为:nn);puts(a);printf(原文为:nn);puts(b);7-13#include void main()char a80,b80;int i,j,k;printf(输入第1个字符串nn);gets(a);printf(输入第2个字符串nn);gets(b);for(i=0;i80;i+)if(ai=0)k=i;for(j=0;j80&bj!=0;j+)ak=bj;k+;ak=0;break;printf(连接后字符串为:nn);puts(a);7-14#include void main()char a80,b80;int i,j,k;printf(输入第1个字符串nn);gets(a);printf(输入第2个字符串nn);gets(b);for(i=0;(i0)printf(nn字符串a大于字符串b:%4dnn,k);break;else if(k0)printf(nn字符串a小于字符串b:%4dnn,k);break;else k=0;if(k=0) printf(nn字符串a等于字符串b:%4dnn,k);7-15#include void main()char s180,s280;int i,j;printf(输入数组s1nn);gets(s1);printf(输入数组s2nn);gets(s2);for(i=0;i80&s2i!=0;i+)s1i=s2i;s1i=0;printf(nn复制后的数组为:nn);puts(s1);第八章8-1#include void main()int max_div(int,int);int min_mul(int,int);int m,n;printf(输入两个整数nn);scanf(%d%d,&m,&n);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)&(k2%i=0)return(i);flag=1;break;else flag=0;if(flag=0) return(0);int min_mul(int k1,int k2)int max(int,int);int i,k;k=max(k1,k2);for(i=k;i+)if(i%k1=0)&(i%k2=0)return(i);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(k1k2) max=k2;return(max);8-2#include #include void main()void root1(float,float,float);void root2(float,float,float);void root3(float,float,float);float a,b,c,k;printf(输入a,b,c的值nn);scanf(%f%f%f,&a,&b,&c);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);printf(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,&x);if(prime(x)=0) printf(nn此数为素数nn);else printf(nn此数不是素数nn);int prime(int x)int i,flag;for(i=2;ix;i+)if(x%i=0)flag=1;break;else flag=0;return(flag);8-4#include void main()void exchange(int a33);int a33,i,j;printf(输入一个3*3的矩阵nn);for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&aij);exchange(a);printf(nn转置后的矩阵为:nn);for(i=0;i3;i+)for(j=0;j3;j+)printf(%d ,aij);printf(n);8-5#include void 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;for(i=0;i+)if(stri=0) break;k=i/2;for(j=0;j=k;j+)temp=strj;strj=stri-1-j;stri-1-j=temp;stri=0;8-6#include void 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(ch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论