标题:有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求出这个序列的前20项之 ...
只看楼主
二硫化硒
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-4-20
结帖率:0
已结贴  问题点数:20 回复次数:8 
有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求出这个序列的前20项之和。
运行结果22.0000;有大佬能看看哪里错嘛?
#include<stdio.h>
int main()
{
    int i,x,y,c,t;
    float sum;i=0.0;x=2.0;y=1.0;c=0.0;t=0.0;
    for(i=0;i<=20;i++)
    {
      c=x/y;
      sum=sum+c;
      t=x;
      x=x+y;
      y=t;
    }
    printf("%f\n",sum);
    return 0;
 }
搜索更多相关主题的帖子: 分数 序列 之和 int sum 
2018-04-20 15:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
运行结果22.0000
是正确的结果吗?如果不是,那为什么不告诉别人正确结果应该是多少?否则别人也不知道自己的代码对不对。

程序代码:
#include <stdio.h>

int main( void )
{
    double sum = 0;
    for( unsigned i=0,a=1,b=1; i!=20; ++i )
    {
        b = b + a;
        a = b - a;
        printf( "%s%u/%u", "+"+(i==0), b, a );

        sum += b*1.0/a;
    }
    printf( " = %f\n", sum );
}
运行结果是
2/1+3/2+5/3+8/5+13/8+21/13+34/21+55/34+89/55+144/89+233/144+377/233+610/377+987/610+1597/987+2584/1597+4181/2584+6765/4181+10946/6765+17711/10946 = 32.660261
我也不知道对不对。
2018-04-20 16:42
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:540
专家分:1158
注 册:2016-9-17
得分:7 
额 我终于看懂了 原来你不是定义变量;老哥代码规范要看啊


你除了sum为float  其他全是整型

[此贴子已经被作者于2018-4-20 16:51编辑过]


穷举是最暴力的美学
2018-04-20 16:45
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:540
专家分:1158
注 册:2016-9-17
得分:0 
float sum;i=0.0;x=2.0;y=1.0;c=0.0;t=0.0;
你这一连串的代码让我以为你是定义变量 然后我改成逗号发现报错 你他喵的上面定义的整型
那不就是2+1*20 因为你是从0开始到20 的


穷举是最暴力的美学
2018-04-20 16:54
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:540
专家分:1158
注 册:2016-9-17
得分:0 
回复 楼主 二硫化硒
定义变量和赋值不要写在同一行;
同行语句最好不超过两句

穷举是最暴力的美学
2018-04-20 16:56
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:540
专家分:1158
注 册:2016-9-17
得分:0 
回复 楼主 二硫化硒
定义变量和赋值不要写在同一行;
同行语句最好不超过两句

穷举是最暴力的美学
2018-04-20 16:56
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
得分:7 
你没有理解整型和浮点型的问题。你即便是把2.0或者2.5赋值给整型变量,这个整型变量也只接受整型部分。
以你的程序来讲当i=1时c=3/2;等价于c=1;
而且你的sum没有初始化为0也不对
2018-04-20 17:24
二硫化硒
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-4-20
得分:0 
回复 2楼 rjsp
非常感谢
2018-04-21 10:38
二硫化硒
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-4-20
得分:0 
int main()
{
    int i;
    float sum,x,y,c,t;
    i=1;x=2.0;y=1.0;c=0.0;t=0.0;sum=0.0;
    for(i=1;i<=20;i++)
    {
      c=x/y;
      sum=sum+c;
      t=x;
      x=x+y;
      y=t;
    }
    printf("%f\n",sum);
    return 0;
 }
感谢  写出来了  正确答案
2018-04-21 11:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-486224-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.160559 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved