有一数列:2/1,3/2,5/3,8/5,…,求出这个数列的前10项之和。
展开全部
分析如下:
1.首先弄清楚这组分数序列的规律:
从第二个数开始
分子=前一个数的分子+分母
分母=前一个数的分子
2.需求是前20项之和,因此循环20-1次相加是必然的.
3.第一个数初始化为x=2,y=1
4.从第二个数开始:
分子x=x+y
分母y=x
由于x的值发生变化,因此中间用变量a复制一下.
5.重复上面的操作,直到循环结束.
6,为了测试数据,可以先求前2项之和,即4/2+3/2=3.5程序就是正确的
源程序如下:
#include<stdio.h>
int
main()
{
int
i,x,y,z;
double
he=0;//定义双精度型
x=2;//初始化
y=1;//初始化数据
for(i=1;i<=20;i++)//求第20项
{
he+=(double)(x)/y;//对每项进行累加
z=x;
x=x+y;
y=z;
}
printf("前20项和为:%7.5lf\n",he);
return
0;
}
vc++测试如下:
1.首先弄清楚这组分数序列的规律:
从第二个数开始
分子=前一个数的分子+分母
分母=前一个数的分子
2.需求是前20项之和,因此循环20-1次相加是必然的.
3.第一个数初始化为x=2,y=1
4.从第二个数开始:
分子x=x+y
分母y=x
由于x的值发生变化,因此中间用变量a复制一下.
5.重复上面的操作,直到循环结束.
6,为了测试数据,可以先求前2项之和,即4/2+3/2=3.5程序就是正确的
源程序如下:
#include<stdio.h>
int
main()
{
int
i,x,y,z;
double
he=0;//定义双精度型
x=2;//初始化
y=1;//初始化数据
for(i=1;i<=20;i++)//求第20项
{
he+=(double)(x)/y;//对每项进行累加
z=x;
x=x+y;
y=z;
}
printf("前20项和为:%7.5lf\n",he);
return
0;
}
vc++测试如下:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询