C语言课后习题编程答案(谭浩强第二版)

1.5

#include<stdio.h>

Main()

{

printf("* * * * * * * * * * * *\n");

        printf("     very good\n");

         printf("** * * * * * * * * * * *\n") ;

}

1.6

#include<stdio.h>

Main()

{

         inta,b,c,d;

         scanf("%d,%d,%d",&a,&b,&c);

         if(a>b) {

                  if(a>c)printf("%d",a);

                  else

                  printf("%d",c);

         }

         else

                  if(b>c)printf("%d",b);

                  else

                  printf("%d",c);}

第三章

3.3

八进制

十六进制

10

12

A

32

40

20

75

113

4B

-617

627

197

-111

21

11

2483

4663

9B3

-28654

10022

1012

21003

51013

520B

3.4-3.6略

3.7

#include<stdio.h>

Main()

{

char c1,c2,c3,c4,c5;

c1='C';c2='h';c3='i';c4='n';c5='a';

c1+=4;c2+=4; c3+=4;c4+=4;c5+=4;

printf("%c,%c,%c,%c,%c",c1,c2,c3,c4,c5);

}

3.8

 能,因为字符型和整型通用

3.9

(1)2.5

(2)3.5

3.10

9,11,9,10

3.11-3.12略

第四章              

4.4

printf("a= 3  b= 4 c= 5\n");

printf("x=1.200000,y=2.400000,z=-3.600000\n");

其他自行输入

4.5

57

  5  7

67.8564,-789.124

67.8564   ,-789.124 

67.86,-789.12,67.8564,-789.1240,67.8564,-789.124

6.785640e+001,-7.89e+002

A,65,101,41

1234567,4553207,12d687

65535,177777,ffff,65535

computer,  com

4.8

#include<stdio.h>

Main()

{

int h;

float r,zc,area,barea,tj,tj1;

scanf("%d,%f",&h,&r);

zc=2*3.14*r;

area=3.14*r*r;

barea=4*3.14*r*r*r;

tj=4.0/3*3.14*r*r*r;

tj1=area*h;

printf("%.2f,%.2f,%.2f,%.2f,%.2f,",zc,area,barea,tj,tj1);

}

4.9

#include<stdio.h>

Main()

{

float h,zc;

scanf("%f",&h);

zc=5.0/9*(h-32);

printf("%.2f",zc);

}

4.10

(1)字符型

(2)printf按%d输出,对putchar进行类型强制转换

(3)否,要看整型变量是否包含符号位,以及取值范围无符号位输出0~255之间的整数,有符号输出-128~127之间的整数

第五章

5-4

#include<stdio.h>

Main()

{

int a,b,c,t;

scanf("%d,%d,%d",&a,&b,&c);

if(a<b)

{t=a;a=b;b=t;

}

if(a<c)

{t=a;a=c;c=t;

}

printf("%d",a);

}

5-5

#include<stdio.h>

Main()

{

int x,y;

scanf("%d",&x);

if(x<1)y=x;

else if(x<10)y=2*x-1;

else y=3*x-11;

printf("%d",y);

}

5-6

#include<stdio.h>

Main()

{

int  c;

float x;

scanf("%f",&x);

if(x>100)goto m;

else if(x<60) printf("E\n");

else

{

c=((int)x)/10;

switch(c)

{case 10:

         case9:printf("A\n");break;

         case8:printf("B\n");break;

         case7:printf("C\n");break;

         case6:printf("D\n");break;

 

}

goto n;

}

m:    printf("overflow");

n:printf("");

}

 

5-7

#include<stdio.h>

#include<math.h>

Main()

{

int x,i,a,b,c,d,e,f;

i=0;

scanf("%d",&x);

if(x/10000!=0)goto m;

if(x/1000!=0)goto n;

if(x/100!=0)goto o;

if(x/10!=0)goto p;

if(x/10==0)goto r;

m:if(x/10000!=0)

{++i;a=x/100000;

if(x/10000!=0)

{++i;b=(x-a*100000)/10000;

if(x/1000!=0)

{++i;c=(x-a*100000-b*10000)/1000;

if(x/1000!=0)

{++i;d=(x-a*100000-b*10000-c*1000)/100;

if(x/100!=0)

{++i;e=(x-a*100000-b*10000-c*1000-d*100)/10;

if(x/10!=0)

{++i;f=(x-a*100000-b*10000-c*1000-d*100-e*10);

}}

}}}

printf("%d位数\n",i);

printf("%d%d%d%d%d%d",f,e,d,c,b,a);goto g;}

n:if(x/1000!=0)

{++i;b=x/1000;

if(x/100!=0)

{++i;c=(x-b*1000)/100;

if(x/10!=0)

{++i;d=(x-b*1000-c*100)/10;

if(x/10!=0)

{++i;f=(x-b*1000-c*100-d*10);

}

}}

printf("%d位数\n",i);

printf("%d%d%d%d",f,d,c,b);goto g;}

  o:if(x/100!=0)

{++i;b=x/100;

if(x/10!=0)

{++i;c=(x-b*100)/10;

if(x/10!=0)

{++i;f=(x-b*100-c*10);

}

}

printf("%d位数\n",i);

printf("%d%d%d",f,c,b);goto g;}

 

   p:if(x/10!=0)

{++i;b=x/10;

if(x/10!=0)

{++i;f=(x-b*10);

}

printf("%d位数\n",i);

printf("%d%d%d",f,b);goto g;}

r:printf("1位数,%d",x);

g:printf("");

}

 

5-8

#include<stdio.h>

#include<math.h>

Main()

{

float a,b;

scanf("%f",&a);

if(a<=100000)b=a*0.1;

else if (a<=200000)b=10000+(a-10000)*0.075;

else if(a<=400000)b=17500+(a-200000)*0.05;

else if(a<=600000)b=27500+(a-400000)*0.03;

else if(a<=1000000)b=39500+(a-600000)*0.015;

else b=45500+(a-1000000)*0.01;

printf("%.4f",b);

}

SWITCH方法

#include<stdio.h>

#include<math.h>

Main()

{

float a,b;

int c;

scanf("%f",&a);

c=(int)a/100000;

switch(c)

{case 0:b=a*0.1;break;

case 1:b=10000+(a-10000)*0.075;break;

case 2:

case 3:b=17500+(a-200000)*0.05;break;

case 4:

case 5:b=27500+(a-400000)*0.03;break;

case 6:

case 7:

case 8:

case 9:b=39500+(a-600000)*0.015;break;

default : b=45500+(a-1000000)*0.01;     

}

printf("%.4f",b);

}

 

5-9

#include<stdio.h>

Main()

{

float a,b,c,d,t;

scanf("%f,%f,%f,%f",&a,&b,&c,&d);

if(a<b)

{t=a;a=b;b=t;}

if(a<c)

{t=a;a=c;c=t;}

if(a<d)

{t=a;a=d;d=t;}

if(b<c)

{t=b;b=c;c=t;}

if(b<d)

{t=b;b=d;d=t;}

if (c<d)

{t=c;c=d;d=t;}

printf("%f,%f,%f,%f",a,b,c,d);

}

 

5-10

#include<stdio.h>

#include<math.h>

Main()

{

float a,b,c,e,f,g,d;

scanf("%f,%f",&a,&b);

c=(a-2)*(a-2)+(b-2)*(b-2);

e=(a-2)*(a-2)+(b+2)*(b+2);

f=(a+2)*(a+2)+(b-2)*(b-2);

g=(a+2)*(a+2)+(b+2)*(b+2);

if (c<=1 || e<=1 || f<=1 ||g<=1)printf("d=10");

elseprintf("d=0");}

习题6

6—1

#include<stdio.h>

#include<math.h>

Main()

{

iint m,n,t=0,x=0,y=0,e,f;

scanf("%d,%d",&m,&n);

e=n;

f=m;

if(m<n)

{t=m;m=n;n=t;}

while(m%n!=0)

{t=m%n;m=n;n=t;}

x=n;

y=(e*f)/x;

printf("%d,%d",x,y);}

6-2

#include<stdio.h>

#include<math.h>

Main()

{

char ch;  

int a=0,b=0,c=0,d=0,e=0;

printf("please input the string\n");

while((ch=getchar())!='\n')

{

         if(ch<='z'&&ch>='a')a++;

         elseif(ch==' ')c++;

         elseif(ch<58&&ch>47)d++;

         elseif(ch<='Z'&&ch>='A')b++;

         elsee++;

}

printf("小写%d大写%d 空格%d 数字%d 其它%d",a,b,c,d,e);

}

6-3

#include<stdio.h>

#include<math.h>

Main()

{

int a,s=1,d;

int i,n;

scanf("%d,%d",&a,&n);

d=a;

for(i=1;i<n;i++)

{s=s*10+1;

d=d+a*s;

}

printf("%d",d);

}

6-4

#include<stdio.h>

#include<math.h>

Main()

{

long int i,j,a=1,b=0;

for(i=1;i<=20;i++)

{for(j=1;j<=i;j++)

a=a*j;

b=b+a;

}

printf("%ld",b);

}

6-5

#include<stdio.h>

#include<math.h>

Main()

{

long int i,j,a=0,b=0;

long int k;float c,d;

for(i=1;i<=100;i++) a=a+i;

for(i=1;i<=50;i++)b=b+i*i;

for(i=1;i<=0;i++)c=c+1.0/k;

d=a+b+c;

printf("%f",d);

}

6-6

#include<stdio.h>

#include<math.h>

Main()

{

int a,b,c,d,i;

for(i=100;i<=999;i++)

{a=i/100;

b=i/10-10;

c=i%10;

d=a*a*a+b*b*b+c*c*c;

if(d==i)printf("%d",i);

}

}

6-7

#include<stdio.h>

#include<math.h>

Main()

{

int i,j,a,b,c;

 

for(i=2;i<=1000;i++)

{c=1;

         a=sqrt(i);

for(j=2;j<=a;j++)

if(i%j==0)

{b=i/j;

         c=c+j+b;

}

if(c==i)

printf("%d its factors are\n",c);

 

}

6-8

#include<stdio.h>

#include<math.h>

Main()

{

int i,j;

float a,b,c,d,m;

a=1;b=2;

c=0;

for(i=1;i<=20;i++)

{d=a+b;

c=c+b/a;

a=b;

b=d;

}

printf("%f",c) ;

}

6-9

#include<stdio.h>

#include<math.h>

Main()

{

float a,b,c,i;

a=100;

c=100;

for(i=2;i<=10;i++)

{

         b=a/2.0;

         c=c+b*2;

         a=b;

}

printf("%f",c);

}

6-10

#include<stdio.h>

#include<math.h>

Main()

{

int i,a,x,c;

x=1;

for(i=2;i<=10;i++)

{

         a=2*(x+1);

         x=a;

}

printf("%d",a);

}

6-11

#include<stdio.h>

#include<math.h>

Main()

{

float a,x0,xl;

scanf("%f",&a);

x0=a/2;

xl=(x0+a/x0)/2;

do

{x0=xl;

xl=(x0+a/x0)/2;

}

while(fabs(x0-xl)<1e-5);

printf("%.4f\n",xl);

}

}

6-12

#include<stdio.h>

#include<math.h>

Main()

{

}

6-13

#include<stdio.h>

#include<math.h>

Main()

{

float a,b,c,d,i,j,m;

a=-10;b=10;

do{

c=(a+b)/2;

d=2*c*c*c-4*c*c+3*c-6;

         if(d>0)b=c;

         elseif(d<0)a=c;

}

while(d!=0);

printf("%f",c);

}

6-14

#include<stdio.h>

#include<math.h>

Main()

{

int i,j,k;

for(i=0;i<=3;i++)

{

for(j=1;j<=3-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


猜你喜欢

转载自blog.csdn.net/yhxiaohao/article/details/79513649
今日推荐