当前位置:文档之家› 谭浩强c语言课后习题答案(重点版)

谭浩强c语言课后习题答案(重点版)

从137页开始往后的题目才能算得上是真正的有价值的,137页以前的题如果你都做不了,那我建议你好好反思一下自己来大学干嘛的。

137页第一题#include<stdio.h>#include<math.h>void main(){int i,j,k;for(i=101;i<200;i++){k=sqrt(i);for(j=2;j<=k;j++)if(i%j==0)break;if(j>k)printf("%d\n",i);}}137页第三题#include<stdio.h>#include<math.h>void main(){int i,a,b,c;printf("水仙花数:\n");for(i=101;i<1000;i++) /*验证所有的三位数*/{a=i/100; /*取出百位*/b=i%100/10; /*取出十位*/c=i%100%10; /*取出个位*/if(i==pow(a,3)+pow(b,3)+pow(c,3)) /*条件*/printf("%d\n",i);}}137页第四题#include<stdio.h>void main(){int n=1,i;for(i=1;i<10;i++){n=2*(n+1);}printf("%d\n",n);}137页第五题#include<stdio.h>void main(){int i;float h=100,sum=100;for(i=0;i<10;i++){h=h/2.0;sum=sum+h;if(i==9)printf("%f\n",h);}printf("%f\n",2*sum-100);}167页第一题#include<stdio.h>void main(){int a[10],i;float sum=0;printf("input 10 numbers:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);sum+=a[i];}sum/=10;printf("%f\n",sum);}167页第二题#include <stdio.h>void main(){int i,max=0,max_i;int a[10]={80,85,84,82,85,100,99,82,63,52};for(i=0;i<10;i++)if(a[i]>max){max=a[i];max_i=i;}printf("max=%d\nmax_i=%d\n",max,max_i); }167页第三题#include <stdio.h>void main(){float a[4][4];int i,j;float sum;printf("please input numbers:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%f",&a[i][j]);for(i=0;i<4;i++){sum=0;for(j=0;j<3;j++){sum+=a[j][i];}a[3][i]=sum/3;printf("%f\n",a[3][i]);}}167页第四题#include<stdio.h>void main(){floata[5][5]={{80,90,72,90},{68,67,86,98},{58,69,92,76},{59,96,98,8 0},{96,68,75,86}},sum,t;int i,j,k;for (i=0;i<5;i++){sum=0;for(j=0;j<4;j++)sum+=a[i][j];a[i][4]=sum/4;}for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%12f",a[i][j]);printf("\n");}}167页第五题#include<stdio.h>#define N 5void main(){int a[N]={8,6,5,4,1};int i,t;for(i=0;i<N/2;i++){t=a[i];a[i]=a[N-i-1];a[N-i-1]=t;}for(i=0;i<5;i++)printf("%d",a[i]);printf("\n");}167页第六题#define N 5#include<stdio.h>void main(){int a[N],low=0,high=N-1,mid,x,i;printf("请从大到小输入5个数:\n");for(i=0;i<N;i++)scanf("%d",&a[i]);printf("输入要查找的数:\n");scanf("%d",&x);while(low<high){mid=(low+high)/2;if(a[mid]==x)break;if(a[mid]>x)low=mid+1;if(a[mid<x])high=mid-1;else printf("无此数");}printf("%d是第%d个元素的值",x,mid); }167页第七题#include<stdio.h>void main(){int i;char s[]=" *****";for(i=0;i<5;i++)printf("%s\n",&s[8-2*i]);}167页第八题#include<stdio.h>void main(){ int i,j;int A=0,a=0,number=0,space=0,others=0;char b[3][80]={"123456789 What are you doing ?123456789 What are you doing ?123456789 What are you doing ?123456789 What are you doing ?123456789 What are you doing ?123456789 What are you doing ?123456789 What are you doing ?123456789 What are you doing ?"};for(i=0;i<3;i++){for(j=0;j<80;j++){if((b[i][j]<=90)&&(b[i][j]>=65)) A++;else if((b[i][j]<=122)&&(b[i][j]>=97)) a++;else if((b[i][j]<=57)&&(b[i][j]>=48)) number++;elseif(b[i][j]==" ") space++;else others++;}}printf("输出结果:\n");printf("A=%d\n",A);printf("a=%d\n",a);printf("number=%d\n",number);printf("space=%d\n",space);printf("others=%d\n",others);}208页第一题#include<stdio.h>void main(){int large(int x,int y);int low(int x,int y);int a,b,c,t,m;printf("please input two integer numbers:");scanf("%d%d",&a,&b);if(a<b){c=a;a=b;b=c;}t=large(a,b);m=low(a,b);printf("最大公约数:%d\n",t);printf("最小公倍数:%d\n",m);}int large(int x,int y){int t;t=x%y;while (t!=0){x=y;y=t;t=x%y;}return (y);}int low(int x,int y){int large(int,int);int t;t=x*y/large(x,y);return (t);}208页第二题#include<stdio.h>#include<math.h>void main(){int prime(int n);int x,y;printf("input an integer number:");scanf("%d",&x);y=prime(x);if(y) printf("%d是素数\n",x);else printf("%d不是素数\n",x);}prime(int n){int i,z;for(i=2;i<=sqrt(n);i++)if (n%i==0) z=0;else z=1;return(z);}208页第四题#include<stdio.h>void main(){int a=4,b=3,c=5,t=0;if(a<b)t=a;a=b;b=t;if(a<c)t=a;a=c;c=t;printf("%d%d%d\n",a,b,c); }。

相关主题