菜鸟求救:帮我看看哪里错了,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/15 10:04:00
c语言程序:
有一个分数数列:2/1,3/2,5/3,8/5,13/8,21/13……求出这个数列前20项之和。
我的代码是这样的:
#include <stdio.h>
void main()
{
int a,b,count;
a=1;b=2;
double z,sum=2/1;
for(count=2;count<=20;count++)
{
a=a+b;
b=a+b;
z=b/a;
sum=sum+z;
}
printf("%f",sum);
}
答案是32.660261,我的运行时答案是21.000000。请帮我看一下为什么错了,怎么改,谢谢!!!

#include <stdio.h>
main()
{
float a=3,b,t=2,z=0,sum=2.000000;
int i;
for(i=2;i<=20;i++)
{
b=t;
z=a/b;
t=a;
a=t+b;
sum=sum+z;
}
printf("%f",sum);
getch();
}
把a和b定义成float
具体的算法不太对,我的可以得出正确答案
按照你写的循环
只能计算:2/1+5/3+13/8...

a=a+b;
b=a+b;
z=b/a;
改成:
b=a+b;
z=b/a;
a=a+b;

按照你写的循环
只能计算:2/1+5/3+13/8...