发布时间 : 星期五 文章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