资源描述
C语言程序设计第三版谭浩强课后习题答案完整版
C语言程序设计第三版谭浩强课后习题答案完整版
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(C语言程序设计第三版谭浩强课后习题答案完整版)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为C语言程序设计第三版谭浩强课后习题答案完整版的全部内容。
1。5
#include 〈stdio.h>
void main()
{
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n”);
printf(” Very good! \n”);
printf(”* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n”);
}
1.6
#include 〈stdio.h〉
void main()
{
float max(float x,float y,float z);
float a,b,c;
printf(”请分别输入a,b,c:\n");
scanf(”%f,%f,%f”,&a,&b,&c);
printf("max=%f",max(a,b,c));
}
float max(float x,float y,float z)
{
float m,n;
m=x>y? x: y;
n=m>z? m: z;
return(n);
}
3。6
#include <stdio.h〉
void main()
{
char c1='a’,c2=’b’,c3=’c’,c4=’\101',c5='\116’;
printf(“a%c b%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t\b%c %c\n”,c4,c5);
}
3。9.1
#include <stdio.h〉
void main()
{
double x=2。5,y=4.7,z;
int a=7;
z=x+a%3*(int)(x+y)%2/4;
printf(”该表达式的值为:%f",z);
}
3.9.2
#include 〈stdio。h>
void main()
{
int a=2,b=3;
float x=3。5,y=2。5,z;
z=(float)(a+b)/2+(int)x%(int)y;
printf(”该表达式的值为:%f”,z);
}
4。5
#include 〈stdio。h〉
void main()
{
int a=5,b=7;
double x=67.8564,y=-789.124;
char c='A’;
long n=1234567;
unsigned u=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n”,x,y);
printf("%—10f,%—10f\n”,x,y);
printf("%8。2f,%8。2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
printf(”%e,%10。2e\n”,x,y);
printf(”%c,%d,%o,%x\n”,n,n,n);
printf("%ld,%lo,%x\n”,n,n,n);
printf("%u,%o,%x,%d\n”,u,u,u,u);
printf("%s,%5.3s\n",”COMPUTER”,"COMPUTER”);
}
4.6
#include 〈stdio.h>
void main()
{
int 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 main()
{
int 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 main()
{
float 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("圆周长为:%.2f\n”,l);
printf(”圆面积为:%。2f\n”,s1);
printf(”圆球表面积为:%.2f\n",s2);
printf("圆球体积为:%.2f\n",v1);
printf(”圆柱体积为:%.2f\n”,v2);
}
5.5 #include 〈stdio。h〉
void main()
{
float x,y;
printf("请输入x的值:\n");
scanf(”%f”,&x);
if(x〈1)
y=x;
else
if(x>=1&&x〈10)
y=2*x-1;
else
y=3*x-11;
printf("x与y的值分别为:\n%f,%f",x,y);
printf(”\n");
}
5.6 #include 〈stdio.h〉
void main()
{
float b;
int a;
printf(”请输入该同学的成绩:\n");
scanf("%f”,&b);
while (b<0||b>100)
{
printf("输入有误,请重新输入:\n”);
scanf(”%f”,&b);
}
a= int(b/10);
if(a〈6) a=5;
switch(a)
{
case 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 main()
{
int x,y,m,n,i=1,j=0;
printf(”请给出一个不多于5位的正整数:\n");
scanf(”%d",&x);
while(x〈=0||x>=100000)
{ printf(”输入有误\n请给出一个不多于5位的正整数:\n");
scanf("%d",&x);
}
for(n=0;n〈5;n++)
{
y=int(x/pow(10,n));
if(y>0&&y<10)
m=n+1;
}
printf(”它是%d位数\n",m);
printf(”从高到低位依次为\n");
do
{
printf(” %d",int(x/pow(10,m-i))%10);
i++;
}
while(m—i〉=0);
printf("\n逆序输出为\n");
do
{
printf(” %d”,int(x/pow(10,j))%10);
j++;
}
while(j—m<0);
printf(”\n”);
}
6.1输入两个正整数m和n,求其最大公约数和最小公倍数.
#include <stdio。h〉
void main()
{
int m,n,i,j;
printf("请分别输入m,n的值:\n”);
scanf("%d,%d”,&m,&n);
for(i=1;i〈=m;i++)
{
if(m%i==0&&n%i==0)
j=i;
}
printf("这两个整数的最大公约数是:%d”,j);
for(i=j;;i++)
{
if(i%m==0&&i%n==0) break;
}
printf("这两个整数的最小公倍数数是:%d”,i);
printf(”\n");
}
6.2 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include <stdio。h>
void main()
{
int i=0,j=0,k=0,x=0;
char c;
printf(”请输入一行字符串:\n”);
while((c=getchar())!=’\n')
{
if(c〉=’A’&&c〈=’Z’||c〉='a'&&c〈='z') i++;
else if(c==' ') j++;
else if(c〉='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是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。
#include〈stdio.h〉
#include〈math。h>
void main()
{
int i,n;
int sum=0,s=0;
printf(”请输入n的值:\n”);
scanf("%d",&n);
while(n〈1)
{
printf("请重新输入n的值:\n");
scanf(”%d”,&n);
}
for(i=0;i<n;i++)
{
s+=pow(10,i);
sum+=2*s;
}
printf(”sum=%d\n",sum);
}
6。8 题目:有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求出这个数列的前20项之和.
#include〈stdio。h〉
void main()
{
int a=1,b=1,i;
float sum=0。0;
for(i=0;i〈20;i++)
{
a=a+b;
b=a—b;
sum+=(float)a/b;
}
printf("这个数列前二十项之和为:\n%f",sum);
printf("\n”);
}
7.2
#include<stdio。h〉
void main()
{ int i,j,t,a[10];
printf("请输入十个整数:\n");
for(i=0;i〈10;i++)
{
scanf("%d”,&a[i]);
}
for(j=1;j〈10;j++)
for(i=0;i〈10—j;i++)
if(a[i]<a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf(”这十位数从大到小排列为:\n”);
for(i=0;i〈10;i++)
printf(”%5d",a[i]);
printf("\n");
}
7。3
#include〈stdio。h〉
void main()
{
int i,j,m,n,a[3][3];
printf("请输入3*3的整形矩阵\n”);
for(i=0;i<3;i++)
for(j=0;j〈3;j++)
scanf(”%d",&a[i][j]);
m=a[0][0]+a[1][1]+a[2][2];
n=a[0][2]+a[1][1]+a[2][0];
printf("3*3的整形矩阵对角线元素之和为:\n”);
printf(”%d,%d”,m,n);
}
7。4
#include〈stdio.h〉
void main()
{
static int a[10]={1,5,6,10,20,24,55,58,64};
int i,t;
printf("请输入一个数:\n”);
scanf(”%d",&a[9]);
for(i=9;i〉0;i——)
if(a[i]〈a[i-1])
{
t=a[i-1];
a[i—1]=a[i];
a[i]=t;
}
for(i=0;i<10;i++)
printf(”%4d",a[i]);
printf(”\n”);
}
7.8
#include〈stdio。h>
void main()
{
int a[5][5],b[5],c[5],d[5][5];
int i,j,k,l;
printf(”请输入5*5的整型数组\n");
for(i=0;i<5;i++)
for(j=0;j〈5;j++)
scanf("%d”,&d[i][j]);
for(i=0;i〈5;i++)
for(j=0;j<5;j++)
a[i][j]=d[i][j];
for(i=0,k=0;i〈5;i++,k++)
for(j=0;j<4;j++)
{
if(a[i][j]>=a[i][j+1])
b[k]=a[i][j+1]=a[i][j];
else
b[k]=a[i][j+1];
}
for(j=0,l=0;j〈5;j++,l++)
for(i=0;i〈4;i++)
{
if(a[i][j]〈=a[i+1][j])
c[l]=a[i+1][j]=a[i][j];
else
c[l]=a[i+1][j];
}
for(i=0,k=0;i<5;i++,k++)
for(j=0,l=0;j〈5;j++,l++)
if(d[i][j]—b[k]==0)
{
if(d[i][j]—c[l]==0)
printf(”鞍点为d[%d][%d]=%d\n”,i,j,d[i][j]);
else
printf(”没有鞍点\n");
}
}
7.10
#include〈stdio.h〉
#include〈string。h>
void main()
{
int i,j=0,k=0,l=0,m=0,n=0;
char str0[301],str1[100],str2[100],str3[100];
gets(str1);
gets(str2);
gets(str3);
strcat(str0,str1);
strcat(str0,str2);
strcat(str0,str3);
for(i=0;str0[i]!=’\0';i++)
{
if(str0[i]〉='A’&&str0[i]<='Z’) j++;
else if(str0[i]〉='a'&&str0[i]〈=’z’) k++;
else if(str0[i]>=’0’&&str0[i]<='9') l++;
else if(str0[i]==’ ’) m++;
else n++;
}
printf("大写字母、小写字母、数字、空格以及其他字符的个数依次为:\n");
printf("%5d %7d %5d %6d %4d\n",j,k,l,m,n);
printf(”\n");
}
7.14
#include 〈stdio.h>
#include 〈string。h〉
void main()
{
int i=0,resu;
char s1[100],s2[100];
printf(”\n 请输入string1:”);
gets(s1);
printf("\n 请输入string2:");
gets(s2);
while(s1[i]==s2[i]&&s1[i]!=’\0')
i++;
if(s1[i]==’\0’&&s2[i]=='\0') resu=0;
else resu=s1[i]-s2[i];
printf("\n result:%d\n",resu);
}
8。1
#include〈stdio。h〉
void main()
{
int maxgy(int m,int n);
int mingb(int o,int p);
int a,b;
printf(”请输入两个正整数:a,b\n");
scanf(”%d,%d”,&a,&b);
while(a〈=0||b〈=0)
{
printf("注:请输入两个正整数:a,b\n”);
scanf("%d,%d",&a,&b);
}
printf(”这两个数的最大公约数是:%d",maxgy(a,b));
printf("这两个数的最小公倍数是:%d",mingb(a,b));
printf("\n”);
}
int maxgy(int m,int n)
{
int i,k;
for(i=1;i<=m;i++)
if(m%i==0&&n%i==0)
k=i;
return k;
}
int mingb(int o,int p)
{
int j;
for(j=o;;j++)
if(j%o==0&&j%p==0)
break;
return j;
}
8。3
#include<stdio.h>
void main()
{
int judss(int m);
int a;
printf(”请输入一个正整数:");
scanf(”%d”,&a);
while(a<=0)
{
printf("注:请输入一个正整数:");
scanf(”%d",&a);
}
judss(a);
printf("\n");
}
int judss(int m)
{
int i;
for(i=2;i〈m;i++)
if(m%i==0) break;
if(i〈m)
return printf(”这个数不是素数");
else
return printf(”这个数是素数");
}
8.5
#include<stdio。h〉
#include〈string。h〉
void main()
{
char fx(char str1[100]);
char str0[100];
printf(”请输入一个字符串:\n");
gets(str0);
fx(str0);
puts(str0);
}
char fx(char str1[100])
{ int i,j,k=strlen(str1);
char str2[100];
strcpy(str2,str1);
for(i=0,j=k-1;j>-1;i++,j-—)
str1[i]=str2[j];
return str1[100];
}
展开阅读全文