菜鸟学习中 希望大家帮我解决下这个问题
谁能帮我解决个C问题啊有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13, ... ...
求出这个数列的前20项和
我写的源代码是这样的:
#include<stdio.h>
void main()
{float a,b,sum,term;
int i;
a=2;b=1;sum=0;
for(i=1;i<=20;i++)
{a=a+b;b=a;
term=a/b;
sum=term+sum;
}
printf("sum is %f",sum);
}
运行结果是错误的希望大虾们指点下错在哪里了
感激不尽
留言或:604522194@qq.com
xiexie da jia le
搜索更多相关的解决方案:
学习
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
float a,b,c,sum,term;
int i;
a=2;b=1;sum=0;
for(i=1;i<=20;i++)
{
term=a/b; //第一次计算的trmp应该为初始的a/b
c=a; //a被赋值后改变,所以要先赋给c
a=a+b;
b=c; //赋给b为未改变前的a值
sum=term+sum;
}
printf("sum is %f",sum);
}
----------------解决方案--------------------------------------------------------
我也发表一下自己的,注释说明就复制了2楼的兄弟的
#include<stdio.h>
void main()
{
float a,b,sum,term;
int i;
a=2;b=1;sum=0;
for(i=1;i<=20;i++)
{
term=a/b; //第一次计算的trmp应该为初始的a/b
a=a+b;
b=a-b;
sum=term+sum;
}
printf("sum is %f",sum);
}
----------------解决方案--------------------------------------------------------
for中的内容错了
/*a,b重新赋值应该在运算之后,并且需要个中间转换的变量。
试着作了个小程序,大家看看结果对不对,我没作过类似的题。
*/
程序代码:
#include<stdio.h>
int main(void)
{
int i;
float a=2,b=1,zh;
float term,sum=0;
for(i=1;i<21;i++)
{
term=a/b;
sum+=term;
zh=a+b;
b=a;
a=zh;
}
printf("sum=%6.2f\n",sum);
getch();
}
/*
结果为32.66。
*/
[[it] 本帖最后由 广陵绝唱 于 2008-3-30 21:28 编辑 [/it]]
----------------解决方案--------------------------------------------------------