当前位置: 代码迷 >> C语言 >> 菜鸟学习中 希望大家帮我解决下这个问题
  详细解决方案

菜鸟学习中 希望大家帮我解决下这个问题

热度:183   发布时间:2008-03-30 19:48:23.0
菜鸟学习中 希望大家帮我解决下这个问题
谁能帮我解决个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]]
----------------解决方案--------------------------------------------------------
  相关解决方案