C语言课后答案.docx
- 文档编号:28125793
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:93
- 大小:35.88KB
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(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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课后 答案