4. 编写程序,计算并输出下列级数的前n项之和Sn。n的值从键盘输入。
#include
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! #include
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次落地所经过的总路程。 #include
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)=2x3-4x2+5x-18=0的根(约为2.466)。
注:牛顿迭代公式为:x2=x1-f(x1)/f’(x1),其中f’(x1)为导函数在点x1的值。 #include
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. 有这样一些真分数:其分子和分母都是两位正整数,且分子的个位数与分母的十位数相同,如果把该分数的分子的个位数与分母的十位数同时去掉,所得到的新的分数正好与原分数的值相等,如26/65=2/5。试编程求出所有满足上述条件的真分数。 #include
int a,b,c; // 设这个分数为ab/bc for(a=1;a<=9;a++) for(b=1;b<=9;b++) for(c=1;c<=9;c++) if((a 9. 编写程序,求数列:1,(1+1/2)(1+1/2+1/3),(1+1/2+1/3+1/4),(1+1/2+1/3+1/4+1/5),,…的前10项之和。 #include float s,t; int i; s=0,t=0; for(i=1;i<=10;i++) { t=t+1.0/i; s=s+t; } printf(\} 10. 编写程序,求3到100之间的所有素数之和。 #include int s,i,k,flag; s=0; for(i=3;i<=100;i++) { flag=1; for(k=2;k printf(\} 11. 编写程序,求Fibonacci数列中大于800的最小的一个数(结果为987)。 #include int f1=1,f2=1,f3; while(f3<=800) { f3=f1+f2; f1=f2; f2=f3; } printf(\数列中大于800的最小数是]\\n\} 习题六 一、选择题 1~10:D D C B A B C D C D 11~20:A B B C C D C A B B 21~30:B B D D D D C D C A 注:第16题答案C为:字符串\与\相等 第19题题目为:已知:char str1[10],str2[10]={\则在程序中能够将字符串 \赋给数组str1的正确语句是。 第21题题目为:设有:char str1[20]=\则执行语句: printf(\的结果是。 第28题答案D为: aaaa bbbb cccc dddd 二、填空题 1. 9 、 0 2.先行后列 3.字符数组 4. QuickC 5. (c=getchar( )) 、 'A'+i或65+i 6. '\\0' 、 str1[i]-str2[i] 7. CDABC 8. 6 9. 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 10. 600 11. AzyD 12. 4 some string *test 三、编程题 1. 定义一个有20个元素的整型数组,分别求出下标为奇数和偶数的元素的平均值。 #include int i,s0=0,s1=0,a[20]; for(i=0;i<20;i++) a[i]=rand()0; for(i=0;i<20;i+=2) { printf(\ s0=s0+a[i]; } printf(\ sum is:%d ave=%f\\n\ for(i=1;i<20;i+=2) { printf(\ s1=s1+a[i]; } printf(\ sum is:%d ave=%f\\n\ } 2. 设有一个整型数组,另输入一个整数,编程查找这个整数是否在数组中出现过,若出现,则输出第一次出现的位置,否则,输出no found。 #include int i,s,a[20]; for(i=0;i<20;i++) a[i]=rand()0; scanf(\ for(i=0;i<20;i++) if(a[i]==s) { printf(\

