C语言课后答案.docx

上传人:b****8 文档编号:28125793 上传时间:2023-07-08 格式:DOCX 页数:93 大小:35.88KB
下载 相关 举报
C语言课后答案.docx_第1页
第1页 / 共93页
C语言课后答案.docx_第2页
第2页 / 共93页
C语言课后答案.docx_第3页
第3页 / 共93页
C语言课后答案.docx_第4页
第4页 / 共93页
C语言课后答案.docx_第5页
第5页 / 共93页
点击查看更多>>
下载资源
资源描述

C语言课后答案.docx

《C语言课后答案.docx》由会员分享,可在线阅读,更多相关《C语言课后答案.docx(93页珍藏版)》请在冰豆网上搜索。

C语言课后答案.docx

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(b

if(c

if(d

printf("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");

}

 

或:

#

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1