| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7776 人关注过本帖
标题:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/12……求出这个数列的前20项之和。 ...
只看楼主 加入收藏
kiddnoke
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-7-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/12……求出这个数列的前20项之和。 我哪里写错了
#include<stdio.h>
void main()
{int i=2,j=1,k=1;
    float sn=0,nk;
    for(;k<=20;i=i+2,j=j+2,k++)
    {nk=i/j;
        sn=sn+nk;
    }
    printf("sum=%9.6f\n ",sn);
}

我的  sum=21.000000
而课本上的是这样的。
#include<stdio.h>
void main()
{ int i,t,n=20;
    float a=2,b=1,s=0;
    for (i=1;i<=n;i++)
    {s=s+a/b;
        t=a;
        a=a+b;       /*将前一项分子与分母之和作为下一项的分子*/    
                      b=t ;       /*将前一项的分子作为下一项的分母*/    
          }
    printf (" sum=%9.6f\n",s)
}

课本是 32.660259
搜索更多相关主题的帖子: 序列 之和 分数 
2009-07-26 12:46
zzqsw
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-7-11
收藏
得分:0 
你的逻辑错了 后项分子是前一项的分子和分母的和
2009-07-26 13:43
kiddnoke
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-7-22
收藏
得分:0 
回复 2楼 zzqsw
谢谢楼上,我知道了,
可是我的想法是后一项分子和分母分别是前两项分子的和 &前两项分母的和。
我现在还不知道我的算法哪里出错了。
2009-07-26 14:09
kiddnoke
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-7-22
收藏
得分:0 
我真是,傻逼,明白了,呵呵,知道哪里错了。
2009-07-26 14:10
prankmoon
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
收藏
得分:5 
还有,你的 nk=i/j; 改成 nk = i*1.0 / j 方能得到浮点数的结果。否则,结果应该还是不对。
2009-07-26 14:19
kiddnoke
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-7-22
收藏
得分:0 
哦,这个还没有注意到哦,O(∩_∩)O谢谢
2009-07-26 17:48
kiddnoke
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-7-22
收藏
得分:0 
#include<stdio.h>
void main()
{
    int k=1;
    float i1=1,i2=2,
        j1=2,j2=3,s=0,nk,in,jn;
    for(;k<=20;k++)
    {i1=i1+i2;i2=i2+i1;
        j1=j1+j2;j2=j2+j1;
        nk=in/jn;
        s=s+nk;
    }
    printf("sum=%9.6f \n" ,s);
}
各位大哥,我还是愚笨,我是想用前面两个的分子做后面一个数的分子,前面两个的分母做后面一个数的分母。我的算法到底哪里错了啊。算出来的是负数!~!~ 我初学!~
2009-07-26 19:11
maying
Rank: 2
等 级:论坛游民
帖 子:3
专家分:18
注 册:2009-7-26
收藏
得分:15 
我不明白i1=i1+i2;i2=i2+i1;
        j1=j1+j2;j2=j2+j1;是什么意思,这样的话i1和i2,j1和j2岂不是相等了?况且你又没为in和jn赋值你的nk怎么能得到呢?而且i1和i2应当是整型数。我修改了一下你的程序,下面是能运行的:
#include<stdio.h>
void main()
{

    int i1=2,i2=1,m;
    float s=0,nk=2;
    for(int k=1;k<=20;k++)
    {
        m=i1;
        i1=i1+i2;
        i2=m;
        nk=i1*1.0/i2;
        s=s+nk;
    }
    printf("sum=%9.6f \n" ,s);
}
2009-07-26 20:56
handy9999
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2009-7-1
收藏
得分:0 
回复 楼主 kiddnoke
如果你的程序里面FOR循环K=2时,你的分子和分母为4和3,和题目要求的3/2不符合吧??
我也不是很懂~~说错了不要喷我~~
2009-07-28 19:32
kdt602
Rank: 1
来 自:浙江杭州
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-11-16
收藏
得分:0 
我的哪里错了?
#include <stdio.h>
#include <stdlib.h>

main()
{ long int f1,f2,f3,f4;
  double m=0;
    int i;
    f1=2;f2=3;f3=1;f4=2;
    for(i=1;i<=10;i++)
        {   
         m=m+f1/f3+f2/f4;
         f1=f1+f2;f2=f2+f1;
         f3=f3+f4;f4=f4+f3;
        }
     printf("%f\n",m);
  
  system("PAUSE");   
  return 0;
2012-11-26 08:01
快速回复:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/12……求出这个数列的前20项之 ...
数据加载中...
 
   



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

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