C语言程序设计谭浩强第四版课后答案解析.docx
《C语言程序设计谭浩强第四版课后答案解析.docx》由会员分享,可在线阅读,更多相关《C语言程序设计谭浩强第四版课后答案解析.docx(169页珍藏版)》请在冰豆网上搜索。
C语言程序设计谭浩强第四版课后答案解析
第一章程序设计和C语言【第15页】
1-5
#include
intmain()
{printf("**************************\n\n");
printf("VeryGood!
\n\n");
printf("**************************\n");
return0;
}
1-6
#include
intmain()
{inta,b,c,max;
printf("pleaseinputa,b,c:
\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max
max=b;
if(maxmax=c;
printf("Thelargestnumberis%d\n",max);
return0;
}
第2章算法——程序的灵魂【第36页】暂无答案
第3章最简单的C程序设计——顺序程序设计【第82页】
3-1
#include
#include
intmain()
{floatp,r,n;
r=0.1;
n=10;
p=pow(1+r,n);
printf("p=%f\n",p);
return0;
}
3-2-1
#include
#include
intmain()
{floatr5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;
p=1000;
r5=0.0585;
r3=0.054;
r2=0.0468;
r1=0.0414;
r0=0.0072;
p1=p*((1+r5)*5);//一次存5年期
p2=p*(1+2*r2)*(1+3*r3);//先存2年期,到期后将本息再存3年期
p3=p*(1+3*r3)*(1+2*r2);//先存3年期,到期后将本息再存2年期
p4=p*pow(1+r1,5);//存1年期,到期后将本息存再存1年期,连续存5次
p5=p*pow(1+r0/4,4*5);//存活期存款。
活期利息每一季度结算一次
printf("p1=%f\n",p1);//输出按第1方案得到的本息和
printf("p2=%f\n",p2);//输出按第2方案得到的本息和
printf("p3=%f\n",p3);//输出按第3方案得到的本息和
printf("p4=%f\n",p4);//输出按第4方案得到的本息和
printf("p5=%f\n",p5);//输出按第5方案得到的本息和
return0;
}
3-2-2
#include
#include
intmain()
{doubler5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;
p=1000;
r5=0.0585;
r3=0.054;
r2=0.0468;
r1=0.0414;
r0=0.0072;
p1=p*((1+r5)*5);//一次存5年期
p2=p*(1+2*r2)*(1+3*r3);//先存2年期,到期后将本息再存3年期
p3=p*(1+3*r3)*(1+2*r2);//先存3年期,到期后将本息再存2年期
p4=p*pow(1+r1,5);//存1年期,到期后将本息存再存1年期,连续存5次
p5=p*pow(1+r0/4,4*5);//存活期存款。
活期利息每一季度结算一次
printf("p1=%f\n",p1);//输出按第1方案得到的本息和
printf("p2=%f\n",p2);//输出按第2方案得到的本息和
printf("p3=%f\n",p3);//输出按第3方案得到的本息和
printf("p4=%f\n",p4);//输出按第4方案得到的本息和
printf("p5=%f\n",p5);//输出按第5方案得到的本息和
return0;
}
3-2-3
#include
#include
intmain()
{floatr5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;
p=1000;
r5=0.0585;
r3=0.054;
r2=0.0468;
r1=0.0414;
r0=0.0072;
p1=p*((1+r5)*5);//一次存5年期
p2=p*(1+2*r2)*(1+3*r3);//先存2年期,到期后将本息再存3年期
p3=p*(1+3*r3)*(1+2*r2);//先存3年期,到期后将本息再存2年期
p4=p*pow(1+r1,5);//存1年期,到期后将本息存再存1年期,连续存5次
p5=p*pow(1+r0/4,4*5);//存活期存款。
活期利息每一季度结算一次
printf("p1=%10.2f\n",p1);//输出按第1方案得到的本息和
printf("p2=%10.2f\n",p2);//输出按第2方案得到的本息和
printf("p3=%10.2f\n",p3);//输出按第3方案得到的本息和
printf("p4=%10.2f\n",p4);//输出按第4方案得到的本息和
printf("p5=%10.2f\n",p5);//输出按第5方案得到的本息和
return0;
}
3-3.
#include
#include
intmain()
{floatd=300000,p=6000,r=0.01,m;
m=log10(p/(p-d*r))/log10(1+r);
printf("m=%6.2f\n",m);
return0;
}
3-4
#include
intmain()
{intc1,c2;
c1=197;
c2=198;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
return0;
}
3-5
#include
intmain()
{inta,b;
floatx,y;
charc1,c2;
scanf("a=%db=%d",&a,&b);
scanf("%f%e",&x,&y);
scanf("%c%c",&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
return0;
}
3-6
#include
intmain()
{charc1='C',c2='h',c3='i',c4='n',c5='a';
c1=c1+4;
c2=c2+4;
c3=c3+4;
c4=c4+4;
c5=c5+4;
printf("passworis%c%c%c%c%c\n",c1,c2,c3,c4,c5);
return0;
}
3-7
#include
intmain()
{floath,r,l,s,sq,vq,vz;
floatpi=3.141526;
printf("请输入圆半径r,圆柱高h∶");
scanf("%f,%f",&r,&h);//要求输入圆半径r和圆柱高h
l=2*pi*r;//计算圆周长l
s=r*r*pi;//计算圆面积s
sq=4*pi*r*r;//计算圆球表面积sq
vq=3.0/4.0*pi*r*r*r;//计算圆球体积vq
vz=pi*r*r*h;//计算圆柱体积vz
printf("圆周长为:
l=%6.2f\n",l);
printf("圆面积为:
s=%6.2f\n",s);
printf("圆球表面积为:
sq=%6.2f\n",sq);
printf("圆球体积为:
v=%6.2f\n",vq);
printf("圆柱体积为:
vz=%6.2f\n",vz);
return0;
}
3-8-1
#include
intmain()
{
intc1,c2;//整型定义
printf("请输入两个整数c1,c2:
");
scanf("%d,%d",&c1,&c2);
printf("按字符输出结果:
\n");
printf("%c,%c\n",c1,c2);
printf("按ASCII码输出结果为:
\n");
printf("%d,%d\n",c1,c2);
return0;
}
3-8-2
#include
intmain()
{
charc1,c2;//定义字符型变量
inti1,i2;//定义整型变量
printf("请输入两个字符c1,c2:
");
scanf("%c,%c",&c1,&c2);
i1=c1;//赋值给整型变量
i2=c2;
printf("按字符输出结果:
\n");
printf("%c,%c\n",i1,i2);
printf("按整数输出结果:
\n");
printf("%d,%d\n",c1,c2);
return0;
}
3-8-3
#include
intmain()
{
charc1,c2;//定义为字符型
inti1,i2;//定义为整型
printf("请输入两个整数i1,i2:
");
scanf("%d,%d",&i1,&i2);
c1=i1;//将整数赋值给字符变量
c2=i2;
printf("按字符输出结果:
\n");
printf("%c,%c\n",c1,c2);
printf("按整数输出结果:
\n");
printf("%d,%d\n",c1,c2);
return0;
}
3-8
#include
intmain()
{
charc1,c2;
printf("请输入两个字符c1,c2:
");
c1=getchar();
c2=getchar();
printf("用putchar语句输出结果为:
");
putchar(c1);
putchar(c2);
printf("\n");
printf("用printf语句输出结果为:
");
printf("%c%c\n",c1,c2);
return0;
}
第4章选择结构程序设计【第111页】
4-4-1
#include
intmain()
{
inta,b,c;
printf("请输入三个整数:
");
scanf("%d,%d,%d",&a,&b,&c);
if(a
if(bprintf("max=%d\n",c);
else
printf("max=%d\n",b);
elseif(aprintf("max=%d\n",c);
else
printf("max=%d\n",a);
return0;
}
4-4-2
#include
intmain()
{inta,b,c,temp,max;
printf("请输入三个整数:
");
scanf("%d,%d,%d",&a,&b,&c);
temp=(a>b)?
a:
b;/*将a和b中的大者存入temp中*/
max=(temp>c)?
temp:
c;/*将a和b中的大者与c比较,取最大者*/
printf("三个整数的最大数是%d\n",max);
return0;
}
4-5-2
#include
#include
#defineM1000
intmain()
{
inti,k;
printf("请输入一个小于%d的整数i:
",M);
scanf("%d",&i);
while(i>M)
{printf("输入的数不符合要求,请重新输入一个小于%d的整数i:
",M);
scanf("%d",&i);
}
k=sqrt(i);
printf("%d的平方根的整数部分是:
%d\n",i,k);
return0;
}
4-5
#include
#include
#defineM1000
intmain()
{
inti,k;
printf("请输入一个小于%d的整数i:
",M);
scanf("%d",&i);
if(i>M)
{printf("输入的数不符合要求,请重新输入一个小于%d的整数i:
",M);
scanf("%d",&i);
}
k=sqrt(i);
printf("%d的平方根的整数部分是:
%d\n",i,k);
return0;
}
4-6.
#include
intmain()
{intx,y;
printf("输入x:
");
scanf("%d",&x);
if(x<1)/*x<1*/
{y=x;
printf("x=%3d,y=x=%d\n",x,y);
}
elseif(x<10)/*1={y=2*x-1;
printf("x=%d,y=2*x-1=%d\n",x,y);
}
else/*x>=10*/
{y=3*x-11;
printf("x=%d,y=3*x-11=%d\n",x,y);
}
return0;
}
4-7-1
#include
intmain()
{
intx,y;
printf("enterx:
");
scanf("%d",&x);
y=-1;
if(x!
=0)
if(x>0)
y=1;
else
y=0;
printf("x=%d,y=%d\n",x,y);
return0;
}
4-7-2
#include
intmain()
{
intx,y;
printf("pleaseenterx:
");
scanf("%d",&x);
y=0;
if(x>=0)
if(x>0)y=1;
elsey=-1;
printf("x=%d,y=%d\n",x,y);
return0;
}
4-8
#include
intmain()
{floatscore;
chargrade;
printf("请输入学生成绩:
");
scanf("%f",&score);
while(score>100||score<0)
{printf("\n输入有误,请重输");
scanf("%f",&score);
}
switch((int)(score/10))
{case10:
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
case5:
case4:
case3:
case2:
case1:
case0:
grade='E';
}
printf("成绩是%5.1f,相应的等级是%c\n",score,grade);
return0;
}
4-9
#include
#include
intmain()
{
intnum,indiv,ten,hundred,thousand,ten_thousand,place;//分别代表个位,十位,百位,千位,万位和位数
printf("请输入一个整数(0-99999):
");
scanf("%d",&num);
if(num>9999)
place=5;
elseif(num>999)
place=4;
elseif(num>99)
place=3;
elseif(num>9)
place=2;
elseplace=1;
printf("位数:
%d\n",place);
printf("每位数字为:
");
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
switch(place)
{case5:
printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
printf("\n反序数字为:
");
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case4:
printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序数字为:
");
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);
break;
case3:
printf("%d,%d,%d",hundred,ten,indiv);
printf("\n反序数字为:
");
printf("%d%d%d\n",indiv,ten,hundred);
break;
case2:
printf("%d,%d",ten,indiv);
printf("\n反序数字为:
");
printf("%d%d\n",indiv,ten);
break;
case1:
printf("%d",indiv);
printf("\n反序数字为:
");
printf("%d\n",indiv);
break;
}
return0;
}
4-10-1
#include
intmain()
{
inti;
doublebonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+100000*0.05;
bon6=bon4+100000*0.03;
bon10=bon6+400000*0.015;
printf("请输入利润i:
");
scanf("%d",&i);
if(i<=100000)
bonus=i*0.1;
elseif(i<=200000)
bonus=bon1+(i-100000)*0.075;
elseif(i<=400000)
bonus=bon2+(i-200000)*0.05;
elseif(i<=600000)
bonus=bon4+(i-400000)*0.03;
elseif(i<=1000000)
bonus=bon6+(i-600000)*0.015;
else
bonus=bon10+(i-1000000)*0.01;
printf("奖金是:
%10.2f\n",bonus);
return0;
}
4-10-2
#include
intmain()
{
inti;
doublebonus,bon1,bon2,bon4,bon6,bon10;
intbranch;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf("请输入利润i:
");
scanf("%d",&i);
branch=i/100000;
if(branch>10)branch=10;
switch(branch)
{case0:
bonus=i*0.1;break;
case1:
bonus=bon1+(i-100000)*0.075;break;
case2:
case3:
bonus=bon2+(i-200000)*0.05;break;
case4:
case5:
bonus=bon4+(i-400000)*0.03;break;
case6:
case7:
case8:
case9:
bonus=bon6+(i-600000)*0.015;break;
case10:
bonus=bon10+(i-1000000)*0.01;
}
printf("奖金是%10.2f\n",bonus);
return0;
}
4-11
#include
intmain()
{intt,a,b,c,d;
printf("请输入四个数:
");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("a=%d,b=%d,c=%d,d=%d\n",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;