C语言程序设计习题参考答案 第二版 杜友福 联系客服

发布时间 : 星期五 文章C语言程序设计习题参考答案 第二版 杜友福更新完毕开始阅读b9f83f07b107e87101f69e3143323968001cf44d

printf(\ else

printf(\}

习题五 循环结构程序设计

一、 阅读题

1. 8 2. 4321 3. X 4. -1 5. 23 6. 52 7. 5 8. 3

二、 填空题

1. 18 2. 2 3. b=i+1 4. 17

5. i<=9 、 j%3!=0

6. d=1.0 、 k=k+1 、 k<=10 三、 选择题

1~8:ADDAB DDA 四、 编程题

1. 编写程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,

其各位数字的立方之和等于该数本身。例如,407是一个“水仙花数”,因为:407=4+0+7。(注:若将题意改为打印出最大的或最小的“水仙花数”,则应将循环语句作如何调整?)。

答:程序参见文件Cprogram\\xt5_4_01.c

#include \main()

{int a,b,c,k;

for(k=100;k<=999;k++)

//求最大的“水仙花数”改用:for(k=999;k>=100;k--) {a=k/100;b=k/10;c=k; if(k==a*a*a+b*b*b+c*c*c) { printf(\

//求最大或最小“水仙花数”时增加一个语句:break; } }

printf(\}

2. 编写程序,输出从公元1980年至2880年所有闰年的年号。每输出5个年号换一行。

答:程序参见文件Cprogram\\xt5_4_02.c

#include \main()

{int k,flag,n=0;

for(k=1980;k<=2880;k++)

{flag=(k%4==0)&&(k0!=0)||(k@0==0); if(flag)

{ printf(\ n++;

if(n==0) printf(\ } }

printf(\}

3. 编写程序,求1-3+5-7+…-99+101的值。 答:程序参见文件Cprogram\\xt5_4_03.c

#include \main()

3

3

3

{int n,t=1,s=1;

for(n=3;n<=101;n+=2) {t=-t; s=s+t*n; printf(\}

}

4. 编写程序,计算并输出下列级数的前n项之和Sn。n的值从键盘输入。 答:程序参见文件Cprogram\\xt5_4_04.c

#include \main()

{int fz,fm,n,i; float s,t;

fz=2;fm=1;s=0; scanf(\ for(i=1;i<=n;i++) {t=(1.0*fz)/fm; s=s+t;

fz=fz+fm; fm=fz-fm;

}

printf(\}

5.编写程序,求e的值e=1+1/1!+1/2!+1/3!+1/4!+…+1/n! 答:程序参见文件Cprogram\\xt5_4_05.c

#include \void main() {int n,i;

float t,fm=1,e=1; scanf(\ for(i=1;i<=n;i++)

{fm=fm*i; t=1.0/fm; e=e+t; printf(\}

}

6. 已知某球从80米高度自由落下,落地后反复弹起,每次弹起的高度都是上次高度的一半。求此球8次落地所经过的总路程。 答:程序参见文件Cprogram\\xt5_4_06.c

#include \void main() {int n;

float s=80,h=s/2; for(n=2;n<=8;n++) {s=s+2*h;

h=h/2; }

printf(\}

7. 用牛顿迭代法求高次方程f(X)=2x-4x+5x-18=0的根。牛顿迭代公式为:Xn=Xn-1-f(Xn-1)/f’(Xn-1),其中f’(Xn-1)为导函数在点Xn-1的值。 答:程序参见文件Cprogram\\xt5_4_07.c

#include \#include \main()

{float x,f,f1;

x=8; // x的初值可为任意值 do

{f=2*x*x*x-4*x*x+5*x-18; f1=6*x*x-8*x+5; x=x-f/f1; }while(fabs(f)>0.00001); printf(\}

8. 用弦截法求高次方程2x3-3x2+7x-13=0的根。 答:程序参见文件Cprogram\\xt5_4_08.c

#include \#include \main()

{float a,b,c,fa,fb,fc; do

{printf(\ scanf(\ fa=2*a*a*a-3*a*a+7*a-13; fb=2*b*b*b-3*b*b+7*b-13; }while(fa*fb>0); do

{c=(a*fb-b*fa)/(fb-fa);

fc=2*c*c*c-3*c*c+7*c-13; if(fa*fc>0)

{a=c;fa=fc;} else

{b=c;fb=fc;}

}while(fabs(fc)>0.0001); printf(\}

9. 有这样一些真分数:其分子和分母都是两位正整数,且分子的个位数与分母

3

2