标题:求2/1+3/2+5/3+8/5+13/8......
只看楼主
玉立
Rank: 2
等 级:论坛游民
帖 子:32
专家分:24
注 册:2011-10-17
结帖率:100%
已结贴  问题点数:2 回复次数:13 
求2/1+3/2+5/3+8/5+13/8......
我想求2/1+3/2+5/3+8/5+13/8......直到前n项和小于100为止,我写的程序如下,但是运行结果是0,大家能指出原因吗?
#include<stdio.h>
#include<math.h>
void main()
{
    int i=2,j=1;
    float t,sum=0;
    while(sum<1e2)
    {
        t=i/j;
        i=i+j;
        j=i;
        sum=sum+t;
    }
    printf("%f",sum);
    printf("\n");
}

[ 本帖最后由 玉立 于 2011-10-21 23:31 编辑 ]
搜索更多相关主题的帖子: include while 
2011-10-21 23:29
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
你和李庚什么关系?同时注册的,是同一个人?

重剑无锋,大巧不工
2011-10-21 23:35
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
代码...不说了
这代码能得出结果?居然没因为除数为0退出?

重剑无锋,大巧不工
2011-10-21 23:43
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
得分:0 
回复 3楼 beyondyf
除数没有为0吧?
2011-10-21 23:45
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
初始时i = 2, j = 1, t = 2。
之后,i = i + j = 3, j = i = 3, t = i / j = 1。
再之后,t 的值都为1,因为 j = i。而i = i + j = i * 2 = i << 1。
经过32次循环后,i = j = 0。这时在执行到 t = i / j时应该会发生除零错误。
sum 的值不过是在累加1。
总之,

重剑无锋,大巧不工
2011-10-22 15:26
李庚
Rank: 2
来 自:河南南阳
等 级:论坛游民
帖 子:36
专家分:50
注 册:2011-10-17
得分:0 
晕,这是谁啊??和我的问题一样
2011-10-22 15:48
sophia115416
Rank: 2
等 级:论坛游民
帖 子:7
专家分:22
注 册:2010-6-24
得分:0 
t=i/j 结果是1
2011-10-22 16:14
foxmail1
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-10-22
得分:0 
把第一个int 编成float
2011-10-22 16:30
李庚
Rank: 2
来 自:河南南阳
等 级:论坛游民
帖 子:36
专家分:50
注 册:2011-10-17
得分:0 
#include<stdio.h>
main()
{
    int fenzi=1,fenmu=1,temp,i=1,n;
    float sum=0;
    for(;i<=n;i++)
    {
        temp=fenzi;
        fenzi=fenzi+fenmu;
        fenmu=temp;   
        sum=sum+(float)fenzi/fenmu;
        if(sum>100)
        break;
        
    }
    printf("%f",sum);
} 注:题目可能存在小问题吧,即到前n项大于100时的前一项是九十多,然而到循环终止时已经超于100;若小于一百则2/1就可满足吧。哈哈
所以不会这么问,我见过这道题是问前几项的和。
2011-10-22 16:38
tangconghui
Rank: 1
等 级:新手上路
帖 子:10
专家分:6
注 册:2011-10-17
得分:0 
随便敲了几行
参考下吧:

#include<iostream.h>
#include<stdio.h>
using namespace std;

int main()
{
    float divisor=1,dividend=2,reg=0;
    float sum=0;
    while (sum<100)
    {
          sum=sum+dividend/divisor;
          reg=divisor;
          divisor=dividend;
          dividend=reg+dividend;      
    }
    sum=sum-dividend/divisor;
    printf("%f",sum);
    system("pause");
    return 1;  
   
}
2011-10-22 21:52



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




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

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