C语言课后答案.docx
《C语言课后答案.docx》由会员分享,可在线阅读,更多相关《C语言课后答案.docx(93页珍藏版)》请在冰豆网上搜索。
C语言课后答案
第二章
1.
#include
voidmain()
{
printf("ProgramminginCisfun!
\n");
}
2.
#include
voidmain()
{
printf("+---+---+\n");
printf("|||\n");
printf("|||\n");
printf("+---+---+\n");
}
3.
#include
voidmain()
{
intf;
floatc;
f=150;
c=5.*(f-32)/9.;
printf("f=%d,c=%.2f\n",f,c);
}
4.
#include
voidmain()
{
inta,b;
scanf("%d%d",&a,&b);
printf("%d+%d=%d\n",a,b,a+b);
printf("%d-%d=%d\n",a,b,a-b);
}
5.
#include
#include
voidmain()
{
floatx,y;
scanf("%f",&x);
if(x<0)
y=x*x+2*x+1./x;
else
y=sqrt(x);
printf("x=%.3f,y=%.3f\n",x,y);
}
6.
#include
voidmain()
{
floatx;
inty;
scanf("%f",&x);
if(x>0)
y=1;
elseif(x==0)
y=0;
else
y=-1;
printf("x=%.3f,y=%d\n",x,y);
}
7.
#include/*(书上公式有误)*/
#include
voidmain()
{
floatrate,accrual;
intmoney,year;
printf("moneyyearrate=");
scanf("%d%d%f",&money,&year,&rate);
accrual=money*pow(1+rate,year)-money;
printf("accrual=%.2f\n",accrual);
}
8.
#include
voidmain()
{
intf;
floatc;
printf("fc\n");
for(f=10;f<=20;f++){
c=5.*(f-32)/9.;
printf("%3d%8.2f\n",f,c);
}
}
9.
#include
voidmain()
{
ints,i;
s=0;
for(i=10;i<=20;i++)
s=s+i;
printf("10+11+...+20=%d\n",s);
}
10.
#include
voidmain()
{
inti;
floats;
s=0;
for(i=5;i<=15;i++)
s=s+1./i;
printf("1/5+1/6+...+1/15=%f\n",s);
}
11.
#include
voidmain()
{
inti,n,flag;
floats,item;
s=0;
flag=1;
printf("n=");
scanf("%d",&n);
for(i=1;i<=n;i++){
item=flag*1.0/(3*i-2);
s=s+item;
flag=-flag;
}
printf("s=%f\n",s);
}
12.
#include
doublefact(int);
voidmain()
{
inti,m,n;
doublef1,f2;
f1=1;f2=1;
printf("mn=");
scanf("%d%d",&m,&n);
for(i=1;i<=m;i++)
f1=f1*i;
for(i=1;i<=n;i++)
f2=f2*i;
printf("s=%f\n",f1+f2);
}
13.
#include
doublemypow(double,int);
voidmain()
{
intn,i;
doubley=1,x=4.1;
printf("n=");
scanf("%d",&n);
for(i=1;i<=n;i++)
y=y*x;
printf("s=%f\n",y);
}
14.
#include
doublefact(int);
voidmain()
{
intm,n;
printf("mn=");
scanf("%d%d",&m,&n);
printf("s=%f\n",fact(m+n)/(fact(m)+fact(n)));
}
doublefact(intn)
{inti;
doublef;
f=1;
for(i=1;i<=n;i++)
f=f*i;
returnf;
}
15.
#include
doublemypow(double,int);
voidmain()
{
intn;
printf("n=");
scanf("%d",&n);
printf("s=%f\n",mypow(4.1,n));
}
doublemypow(doublex,intn)
{inti;
doublef;
f=1;
for(i=1;i<=n;i++)
f=f*x;
returnf;
}
16.
#include
intsign(double);
voidmain()
{
doublex;
printf("x=");
scanf("%lf",&x);
printf("sign(%.3f)=%d\n",x,sign(x));
}
intsign(doublex)
{inty;
if(x>0)y=1;
elseif(x==0)y=0;
elsey=-1;
returny;
}
17.
#include
floatctof(float);
voidmain()
{
intbegin,end,i;
printf("beginend=");
scanf("%d%d",&begin,&end);
printf("celsiusfahr\n");
for(i=begin;i<=end;i=i+5)
printf("%3d%12.2f\n",i,ctof(i));
}
floatctof(floatc)
{return32+c*9.0/5.0;
}
实验2.补充
#include
#include
voidmain()
{
floata,b,c,x1,x2;
printf("inputa,b,c:
\n");
scanf("%f%f%f",&a,&b,&c);
if(b*b-4*a*c>=0){
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("x1=%.4f,x2=%.4f\n",x1,x2);
}
else
printf("Norealroot\n");
}
实验4.补充
#include
voidmain()
{
intn,t,i,c;
printf("n=");
scanf("%d",&n);
c=0;
for(i=1;i<=n;i++){
scanf("%d",&t);
if(t%2==0)c++;
}
printf("count=%d\n",c);
}
实验1.改错1:
#include
voidmain()/*main输入错误*/
{
printf("*************\n");
printf("Welcome\n");/*缺少;*/
printf("*************\n");/*缺少"*/
}
改错2:
#include
main()
{inta;/*变量必须先定义*/
scanf("%d",&a);
printf("%d",a*a);/*大小写有别,将A改为a*/
}
实验2.改错1:
#include/*改,为.*/
voidmain()
{
intx,y;/*要定义x*/
scanf("%d",&x);/*要输入x*/
y=x*x;
printf("%d=%d*%d\n",y,x,x);/*输出(注释缺少结束,输出缺少表达式,格式缺少\n)*/
printf("%d*%d=%d\n",x,x,y);
}
改错2:
#include
voidmain()
{
floatx,y;/*y未定义*/
printf("inputx:
\n");
scanf("%f",&x);/*多了=,少了&*/
if(x==10)/*判断相等用==*/
y=1/x;/*缺少;*/
elseif(x!
=10)/*缺少if*/
y=x;
printf("f(%.2f)=%.1f\n",x,y);/*少了参数间的分隔符逗号,将数1错打成了字母l*/
}
实验3.改错
/*1.for中各表达式应采用分号间隔
2.lower及upper的值应使用输入获得
3.循环体应非空,因此应去掉for()后的分号
4.循环体既要计算,又要输出,应采用复合语句
5.5/9结果为0,应改为5./9.
*/
#include
voidmain()
{
intlower,upper;
doublecelsius,fahr;/*定义2个double型变量,celsius表示摄氏度,fahr表示华氏度*/
scanf("%d%d",&lower,&upper);/*变量upper给定转换范围的上限*/
printf("fahrcelsius\n");/*显示表头*/
/*温度转换*/
for(fahr=lower;fahr<=upper;fahr++){
celsius=5./9.*(fahr-32.0);
printf("%3.0f%6.1f\n",fahr,celsius);}
}
实验4.改错
#include
doublefact(intn);/*缺少;*/
voidmain()
{
inti;
doublesum;
sum=0;/*缺少赋初值*/
for(i=1;i<=10;i++)/*改<为<=*/
sum=sum+fact(i);
printf("1!
+2!
+…+10!
=%f\n",sum);
}
doublefact(intn)/*多了;*/
{
inti;
doubleresult;
result=1;/*缺少赋初值*/
for(i=1;i<=n;i++)
result=result*i;/*应使用result=result*i,赋值号左边不能用表达式*/
returnresult;
}
第三章
1.
#include
voidmain()
{inti,letters,enters,digits,others;
charc;
letters=enters=digits=others=0;
for(i=1;i<=15;i++){
c=getchar();
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
letters++;
elseif(c=='\n')
enters++;
elseif(c>='0'&&c<='9')
digits++;
else
others++;
}
printf("letters=%d,enters=%d,digits=%d,othersle=%d\n",letters,enters,digits,others);
}
2.
#include
voidmain()
{
intchoice,i;
floatprice;
for(i=1;i<=5;i++){
printf("[1]apples\n");
printf("[2]pears\n");
printf("[3]orangers\n");
printf("[4]grapes\n");
printf("[0]Exit\n");
printf("Enterchoice:
");
scanf("%d",&choice);
if(choice==0)
break;
switch(choice){
case1:
price=3.0;break;
case2:
price=2.5;break;
case3:
price=4.1;break;
case4:
price=10.2;break;
default:
price=0.0;break;
}
printf("price=%0.1f\n",price);
}
printf("Thanks\n");
}
3.
#include
voidmain()
{
intscore;
scanf("%d",&score);
if(score<60)
printf("Fail\n");
else
printf("Pass\n");
}
4.
#include
#include
voidmain()
{
floata,b,c,area,perimeter,s;
scanf("%f%f%f",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a){
perimeter=a+b+c;
s=perimeter/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("perimeter=%.2f,area=%.2f\n",perimeter,area);
}
else
printf("Thesesidesdonotcorrespondtotriangle\n");
}
5.
#include
#include
voidmain()
{
inta,b,c,d,min;
scanf("%d%d%d%d",&a,&b,&c,&d);
min=a;
if(bif(cif(dprintf("min=%d\n",min);
}
或:
#include
#include
voidmain()
{
inta,i,min;
scanf("%d",&a);
min=a;
for(i=1;i<=3;i++){
scanf("%d",&a);
if(a}
printf("min=%d\n",min);
}
6.
#include
voidmain()
{
intrate;
floatsalary,tax;
printf("inputsalary:
\n");
scanf("%f",&salary);
if(salary<=850)
rate=0;
elseif(salary<=1350)
rate=5;
elseif(salary<=2850)
rate=10;
elseif(salary<=5850)
rate=15;
else
rate=20;
tax=rate*(salary-850)/100;
printf("tax=%.2f\n",tax);
}
补充:
#include
voidmain()
{inti,n,t,sum,max;
floatf;
scanf("%d",&n);
scanf("%d",&t);/*先输入第1个*/
sum=t;
max=t;
for(i=2;i<=n;i++){
scanf("%d",&t);/*再输入n-1个*/
sum=sum+t;
if(t>=max)max=t;
}
f=1.0*sum/n;
printf("max=%d,average=%.2f",max,f);
}
改错:
#include
voidmain()/*去掉;*/
{
inta,b,c,t;/*将float改为int*/
printf("a,b,c=");/*加上;*/
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;/*更改两数交换的语句组*/
}
if(b>c){
t=b;b=c;c=t;/*更改两数交换的语句组*/
}
printf("%d<=%d<=%d\n",a,b,c);
}
第四章
1.
#include
main()
{floateps,s,item;
inti,flag;
scanf("%f",&eps);
s=0;i=1;flag=1;
do{
item=1./i;
s=s+flag*item;
i=i+3;
flag=-flag;
}while(item>=eps);
printf("%f",s);
}
2.
#include
main()
{intn,s;
s=0;
scanf("%d",&n);
while(n>0){
if(n%2==0)s=s+n;
scanf("%d",&n);
}
printf("%d",s);
}
3.
#include
main()
{intn,i,j;
floate,item;
e=1.;
scanf("%d",&n);
for(j=1;j<=n-1;j++){
item=1.;
for(i=1;i<=j;i++)
item=item*i;
e=e+1/item;
}
printf("%.2f",e);
}
4.
#include
doublefact(int);
doublemypow(double,int);
main()
{floats,item,x;
inti;
scanf("%f",&x);
s=0;i=1;
do{
item=mypow(x,i)/fact(i);
s=s+item;
i++;
}while(item>=1.e-5);
printf("%f",s);
}
doublefact(intn)/*求阶乘*/
{inti;
doublet;
t=1;
for(i=1;i<=n;i++)
t=t*i;
returnt;
}
doublemypow(doublex,intn)/*求x的n次幂*/
{inti;
doublet=1;
for(i=1;i<=n;i++)
t=t*x;
returnt;
}
5.
略,类似于上一章补充题
6.
#include
main()
{intn,s,t;
scanf("%d",&n);
s=0;t=0;
do{
t++;
s=s+n%10;
n=n/10;
}while(n>0);
printf("count=%d,sum=%d\n",t,s);
}
7.
#include
main()
{inta,b,n,i,t;
floats;
scanf("%d",&n);
s=0;a=2;b=1;
for(i=1;i<=n;i++){
s=s+1.*a/b;
t=a;
a=a+b;
b=t;
}
printf("sum=%f\n",s);
}
或:
#include
main()
{intn,i;
floats,t;
scanf("%d",&n);
s=0;t=2.;
for(i=1;i<=n;i++){
s=s+t;
t=1+1./t;
}
printf("sum=%f\n",s);
}
8.
#include
voidmain()
{
inta,n,i,item,s;
printf("a,n=");
scanf("%d%d",&a,&n);
s=item=0;
for(i=1;i<=n;i++){
item=item*10+a;
s=s+item;
}
printf("s=%d\n",s);
}
9.
#include
#include
main()
{intn,i,count=0;
for(n=100;n<=200;n++){
for(i=2;i<=sqrt(n);i++)
if(n%i==0)break;
if(i>sqrt(n)){
printf("%8d",n);
count++;
if(count%8==0)printf("\n");
}
}
printf("\n");
}
或:
#