C语言课后习题答案.docx
- 文档编号:9543976
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:18
- 大小:18.26KB
C语言课后习题答案.docx
《C语言课后习题答案.docx》由会员分享,可在线阅读,更多相关《C语言课后习题答案.docx(18页珍藏版)》请在冰豆网上搜索。
C语言课后习题答案
实验二:
【2-1】#include
main()
{doubler=2.3,zhouarea;
zhou=2*3.14*r;
area=3.14*r*r;
printf(“zhou=%f,area=%f”,zhou,area);}
【2-2】#include
main()
{inta,b;
scanf("%d,%d",&a,&b);
printf("%d",a%b);}
二.改错
1题:
inta=3;b=5;sum;改为inta=3,b=5,sum;
2题:
scanf(“%lf%lf”,x,y);改为:
scanf(“%lf%lf”,&x,&y);
3题:
b=x%100;改为:
b=x/10%10;
c=x/10;改为:
c=x%10;
实验三:
【3-1】main()
{inta;
scanf(“%d”,&a);
if(a%3==0)printf(“%d”,a);
elseprintf(“不是3的倍数”);}
【3-2】#include
#include
main()
{doublex,y;
scanf("%lf",&x);
if(x<=0)y=fabs(x);
elsey=exp(x);
printf("%f",y);}
二改错:
1题:
ifx%2!
=0改为if(x%2!
=0)
2题:
if(x!
=0);改为if(x!
=0)
y=1/x;改为:
y=1.0/x;
实验四:
【4-1】#include
main()
{ints=0,i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s+i;
printf("%d",s);}
【4-2】
#include
main()
{floats=0,f=1,i,n;
scanf("%f",&n);
for(i=1;i<=n;i=i+2)
{s=s+f/i;
f=-f;}
printf("%f",s);}
或:
#include
main()
{floats=0,f=1,i,n;
scanf("%f",&n);
for(i=1;i<=n;i++)
if(i%2!
=0)
{s=s+f/i;
f=-f;}
printf("%f",s);}
【4-3】#include"stdio.h"
main()
{inti,t1=1,t2=1,s=0,m,n;
scanf("m=%d,n=%d",&m,&n);
for(i=1;i<=m;i++)
t1=t1*i;
for(i=1;i<=n;i++)
t2=t2*i;
s=t1+t2;
printf("%d!
+%d!
=%d",m,n,s);}
二改错
1题:
inti,sum;改为:
inti,sum=0;
for(i=1,i<=100,i++)改为:
for(i=1;i<=100;i++)
2题:
for(i=100;i<=999;i++);改为:
for(i=100;i<=999;i++)
实验五:
【5-1】#include
main()
{charc;
c=getchar();
if(c>='0'&&c<='9')printf("%d",c-'0');
elseif(c=='')printf("%d",c);
elseprintf("%c",c);}
【5-2】#include
main()
{charch;inti,num1=0,num2=0,num3=0,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{ch=getchar();/*循环一次给变量ch赋值一次*/
if(ch>='0'&&ch<='9')
num1=num1+1;/*统计数字字符个数*/
elseif(ch=='*')
num2=num2+1;/*统计*个数*/
elseif((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
num3=num3+1;}/*统计/字母个数*/
printf("数字字符个数=%d,*个数=%d,字母=%d\n",num1,num2,num3);}
【5-3】#include
main()
{doublex,y;
scanf("%lf",&x);
if(x<0)y=0;
elseif(x<10)y=9*x/2;
elsey=4.5*x-8.5*x*x;
printf("x=%lf,y=%lf",x,y);}
或:
#include
main()
{doublex,y;
scanf("%lf",&x);
if(x<0)y=0;
if(x>=0&&x<10)y=9*x/2;
if(x>=10)y=4.5*x-8.5*x*x;
printf("x=%lf,y=%lf",x,y);}
【5-4】#include
main()
{intx;
scanf("%d",&x);
if(x%2==0)
printf("yes");
else
printf("no");}
【5-5】
#include
main()
{charch;
intn1=0,n2=0,n3=0,i;
for(i=1;i<=10;i++)
{ch=getchar();
switch(ch)
{case'':
n1++;break;
case'\n':
n2++;break;
default:
n3++;}}
printf("%d,%d,%d",n1,n2,n3);}
【5-6】
#include
main()
{inta;
scanf("%d",&a);
if(a>=2&&a<=100)
{
if(a%3==0)
printf("%d",a);}
else
printf("错误");}
二改错:
1题scanf(“%d”,x);改为:
scanf(“%d”,&x);
elseif(x<10)y=x^2-x+3;改为:
elseif(x<10)y=x*x-x+3;
elsey=4x-7;改为:
elsey=4*x-7;
2题:
b=1;c=3;改为:
{b=1;c=3;}
实验六:
【6-1】
#include
main()
{ints=0,a=1,b=1;
while(b<=5)
{s=s+a*b;
a=-a;
b=b+1;}
printf("%d",s);}
【6-2】
#include
#include
main()
{doublet=1.0/2,a=1,b=1,c=1,d=2,eps,s=0;
scanf("%lf",&eps);
while(fabs(t)>=eps)
{s=s+t;
a=-a;
b=b+2;
c=c+1;
d=d+1;
t=a*b/(c*d);}
printf("%lf",s);}
或:
#include
#include
main()
{doublet=1.0/2,f=1,n=1,eps,s=0;
scanf("%lf",&eps);
while(fabs(t)>=eps)
{s=s+t;
f=-f;
n++;
t=(2*n-1)/(n*(n+1))*f;
}
printf("%lf",s);}
【6-3】
#include
main()
{inta,s=0;
printf("Enternumber:
");
scanf("%d",&a);/*输入第一个数*/
while(a>0)/*输入数据大于0时,执行循环*/
{if(a%2!
=0)/*如果输入数据为奇数,求和*/
s=s+a;
scanf("%d",&a);}/*输入一个新数据为下一次循环做准备*/
printf("奇数和=%d\n",s);}
二.改错:
1题printf(“%d,”,k);k=k-1;改为:
{printf(“%d,”,k);k=k-1;}
或printf(“%d,”,k),k=k-1;
或printf(“%d,”,k--);
2题while(i<=20);改为:
while(i<=20)
三.填空
1题1空x>=02空x =’\n’ 3题1空t>=1e-52空t*x/i 实验七: 【7-1】 #include main() { floats=0,a=1,b=1,n,t=1; scanf("%f",&n); do {s=s+t; a=-a; b=b+2; t=a/b;} while(b<=n); printf("%f",s);} 【7-2】#include"stdio.h" main() {inti=0,n,s=0,j; printf("Entern: "); scanf("%d",&n); do { j=n%10; n=n/10; i++;/*i用来统计位数*/ s=s+j; }while(n);/*while(n)等价于while(n! =0)*/ printf("i=%d,s=%d\n",i,s);} 二.改错: 1题: min x While(i>n);改为: while(i 2题: if(i! =5&&a%5=0)改为: if(i! =5&&a%5==0) while(i>0);改为: while(i<5); 三.填空: 1题: t*n/(2*n+1); 2题: n%10 3题: 1空s/100 2空10*i 思考题: 程序1结果为: sum=0,i=6循环体一次也没有执行 程序2结果为: sum=6,i=7执行了一次循环体 实验八: 【8-1】 #include main() {inti; for(i=100;i<=999;i++) if(i%5==0) printf("%5d",i);} 【8-2】 #include"stdio.h" main() {doublei,sum=0,t=1,n; scanf("%lf",&n); for(i=1;i<=n;i++) {t=t*i; sum+=1.0/t;} printf("sum=%f\n",sum);} 【8-3】 #include main() {intx,s=0; for(x=1;;x++)/*表达式2省略表示永远为真*/ { s=s+x; if(s>10) break;} printf("%d",s); } 二.改错 1题: for(n=1;n<=30;n++);改为: for(n=1;n<=15;n++) 2题: for(i=1;i<=n)改为: for(i=1;i<=n;) 3题: if(i==(i*i)%10&&i==(i*i)%100)改为: •if(i==(i*i)%10||i==(i*i)%100) 三.填空 1题: n%3==0 2题: m/n 思考题: 3题: 结果为: 随机数,11 4题: 100101 将break改为continue后结果为: 输出不能被3整除的数 实验九: 【9-1】#include"stdio.h" main() {inti,j; for(i=1;i<=4;i++) {for(j=1;j<=10-i;j++) printf(""); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n");}} 【9-2】#include"stdio.h" #include"math.h" main() {inti,j;doublesum=0; for(i=100;i<=200;i++) {for(j=2;j if(i%j==0){sum+=sqrt(i);break;}} printf("%f",sum);} 二.改错 1题: for(n=1;n<=8;n++;)改为: for(n=1;n<=8;n++) scanf("%f",&score); ave+=score; printf("NO%d: %f\n",n,ave); 改为: {scanf("%f",&score); ave+=score;} •printf("NO%d: %f\n",n,ave/5); 2题: for(j=1;j<=10+i;j++)改为: for(j=1;j<=10-i;j++) •for(j=1;j<=2*i+1;j++)改为: for(j=1;j<=5;j++) 三.程序填空: 1题: s=0 2题: 1空: m+12空: i-1 实验十: 【10-1】#include"stdio.h" voidstar(); voidfun(); main() {star(); star(); fun(); star(); star();} voidstar()/*定义函数*/ {printf("**********\n");} voidfun()/*定义函数*/ {printf("hello\n");} 【10-2】#include"stdio.h" intfac(intm); intfac(int年) {intt=1,i; for(i=1;i<=m;i++) t=t*i; returnt;} intmain() {intn; doublef; printf("inputn: "); scanf("%d",&n); f=fac(n); printf("%d! =%f\n",n,f);} 【10-3】#include"stdio.h" #include"math.h" floatfun(floatx)/*在自定义函数体中可以有若干个return语句,但只有一个起作用*/ {if(x==0) return2*x-1; elseif(x>0) returnsqrt(x);} main() {floatx,y; printf("Enterx: "); scanf("%f",&x); printf("\n"); y=fun(x); printf("y=%f\n",y);} 【例10-4】#include"stdio.h" doublemax(doublex,doubley,doublez);/*函数说明*/ main() {doublea,b,c; printf("Entera,b,c: "); scanf("%lf,%lf,%lf",&a,&b,&c); printf("he=%.2f\n",max(a,b,c));} doublemax(doublex,doubley,doublez)/*对形参分别定义*/ {doublesum; sum=x+y+z; returnsum;} 二.改错 1题: intfun(intm)改为: doublefun(intm) •for(i=2;i for(i=2;i<=m;i++) •y+=1/(i*i);改为: y+=1.0/(i*i); printf("\nTheresultis%1f\n",fun(intn));改为: printf("\nTheresultis%1f\n",fun(n)); 2题: intmax(doublex,doubley,doublez);改为: doublemax(doublex,doubley,doublez); •doublemax(doublex,y,z)改为: doublemax(doublex,doubley,doublez) 三.填空: 1题: 1空countdigit(number,2);2空longnumber,inta3空returnn; 2题: 1空: doublefun(intm);2空: double3空: returnt; 实验十一 【11-1】#include doublefun(intn) {inti; doublet=0,s=0; for(i=1;i<=n;i++) {t=1.0/(2*i-1)-1.0/(2*i); s=s+t; } returns;} main() {intn; doubles; printf("\nInputn: "); scanf("%d",&n); s=fun(n); printf("\ns=%f\n",s);} 【11-2】 #include"stdio.h" intfun(intnum); main() {inti,m,n; scanf("%d%d",&m,&n); for(i=m;i<=n;i++) if(fun(i))printf("%5d",i);} intfun(intnum) {intn=num,a,s=0; while(n) {a=n%10; s=s+a*a*a; n=n/10;} if(s==num)return1; elsereturn0;} 【11-3】#include"stdio.h" fun(intx) {if(x%2) return0; else return1;} main() {intx,sum=0; printf("Enterx: "); scanf("%d",&x); while(x>0) {if(fun(x)==1) sum+=x; printf("Enterx: "); scanf("%d",&x);} printf("sum=%d\n",sum);} 二.改错: 1题: doublesum=0,t=1;改为: doublesum=1,t=1; •for(i=0;i<=n;i++)改为: for(i=1;i<=n;i++) 2题: fun(intn)改为: doublefun(intn) returnsum改为: returnsum; 三.填空: 1.题1空: double2空: f13空: f2 2.题1空: 9992空: t/103空: x4空: returnn;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课后 习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)