长沙2017年9米6跑货运:求数列的前10项之和:2/1,3/2,5/3,8/5,用C语言写出程序!

来源:百度文库 编辑:神马品牌网 时间:2024/05/05 19:04:57

有必要用个大数组么~
在下的版本:请指正~

#include<stdio.h>

void main()
{
int a = 1, b = 2, c, i;
double sum = 2;
for( i=1; i<10; i++ )
{
c = a + b, a = b, b = c;
sum += double(b) / a;
}
printf("数列前十项和为:%f\n", sum);
}
结果:16.479906~

第一个回答不会发生数组溢出错误么?~d[10]是干什么用的?没有经过初始化就使用了,发生了除零错误~

第二个显然误解了楼主的意思了~而且数列要累加到第十项,那个整数列要算到第十一项~

写的具体点

#include<stdio.h>
main()
{
int i=0;
float a;
float b[10],c[10],d[10];
b[0]=2.0,b[1]=3.0;
c[0]=1.0,c[1]=2.0;
for(i=2;i<=10;i++)
b[i]=b[i-1]+b[i-2],
c[i]=c[i-1]+c[i-2],
d[i]=c[i]/d[i],a=a+d[i];
printf("\n此数列前10项的和为:%f",a);

}

#include<stdio.h>
main()
{
int k,j;
float add,dat[11];
dat[0]=1;
dat[1]=2;
for (k=2;k<=10;k++)
{dat[k]=dat[k-2]+dat[k-1];}
add=0;
for(j=0;j<10;j++)
{add=dat[j+1]/dat[j]+add;}
printf("结果为: %f",add);
}
这个是正确的。程序看着比较清晰、
排列顺序是:1 2 3 5 8 13……
前两个的和等于第三个数字。
一共11项才有定义的dat[11];
dat[0]=1;
dat[1]=2;起始定义的两个基数、
for (k=2;k<=10;k++)
{dat[k]=dat[k-2]+dat[k-1];}生成11位数据列传给dat数组中、
for(j=0;j<10;j++)
{add=dat[j+1]/dat[j]+add;}
也就是这个程序的计算公式
分子从1-11
分母从0-10
利用add=dat[j+1]/dat[j]+add;格式循环。
结果正确、

上一楼的算法很简洁。。经典,但是一点小错误,就是后面那个强制类型转换,double那要加个括号,不然估计不行,你可以试一下,我这没编译器。。!