二级C语言填空题:题目计算以下分数序列前18项之和 2/1,3/2,5/3,8/5,13/8.......

二级C语言填空题:题目计算以下分数序列前18项之和

2/1,3/2,5/3,8/5,13/8.......

#include <stdio.h>

void main()

{

int i;

float sum,a=2,b=1,t;

/**/ /**/; sum=0;

for (i=1;i<=18;i++)

{

sum+=/**/ /**/;t=a/b

t=a;

a=a+b;

b=/**/ /**/; t

}

printf("sum=%f\n",sum);

getch();

}

/**/ /**/这个中间是填空的部分,右边是正确答案,而我觉得第二个应该是a/b,第三个应该是a-i,用我这答案也可以运行出来但是运行出来的答案跟题库所给的答案(也就是上面程序右边的正确答案)运行出来的值不一样,用我自己的答案笔试推算例子中前四项都符合就最后一项变成了13/9.。而用题库给的答案推算只有前两项符合例子给的式子,我不太理解为什么,求大神解析下,谢谢


包小龙虾
浏览 793回答 1
1回答

Eric_温水之蛙

这题考的是斐波那契数列。数列从第3项开始,每一项都等于前两项之和。分数的分子和分母使用的是斐波那契数列的数字。分数的分子是上一项的分子和分母之和,分数的分母是上一项的分子。根据这个算法,得到的计算公式是正确答案。sum+=/**/ /**/;t=a/b这句话为什么会有t?应该是sum+=a/b
打开App,查看更多内容
随时随地看视频慕课网APP