一个C语言题目的思路

来源:百度知道 编辑:UC知道 时间:2024/06/17 16:06:59
本人是初学者,遇到一题目要求计算:2/1,3/2,5/3,8/5,13/8,21/13.......这一分数序列前20项的和.请问解这题的思路应该如何(只是思路,不需要完整的源程序)?我已经知道了每一项分数的分子等于前一项的分子加分母,分母等于前一项的分子.请问在C语言中应该如何去表达?谢谢!

int i=20,a=2,b=1;/*i为20个,a为分母,b为分子*/
int c;/*c为交换时要用的数*/
float s=0;
/*s为最后的结果,为了精确可以改为double*/
for(i=1;i<=20;i++)
{
s=s+a/b;
c=a;
a=a+b;
b=c;
}
printf("结果为:%f",s);

我的基本都是1楼的人的思想,我只是昨天看了谭浩强老师的讲座,让我知道,讲要讲到让别人最容易懂。希望能帮到你.

这个程序用数组作会方便一些,当然不用数组也可以实现,下面分别给出:

算法一:不用数组

#include <stdio.h>

int main(int argc, char* argv[])
{
float i1=2,i2=3,j1=1,j2=2,s;
int count=1,t;
s=i1/j1+i2/j2;
while (count++<19) //计算累加次数
{
i1=i1+i2;//计算当前的i,j值
j1=j1+j2;
s+=i1/j1;//累加

t=i1; //交换i1和i2、j1和j2的值,以便下次计算
i1=i2;
i2=t;
t=j1;
j1=j2;
j2=t;
}

return 0;
}

///////////////////////////////////////////////////

算法二:用数组

#include <stdio.h>
void main()
{
float a[20]={2,3},b[2