| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 740 人关注过本帖
标题:请教一道C编程题
只看楼主 加入收藏
嵇兵
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-3-12
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:8 
请教一道C编程题
1+1/2+2/3+3/5+5/8+.....的前100项和的
用C完成,感谢!!!!
搜索更多相关主题的帖子: 编程 100 
2010-03-12 13:37
mywaylgh
Rank: 8Rank: 8
来 自:厨房
等 级:蝙蝠侠
威 望:5
帖 子:188
专家分:729
注 册:2010-3-10
收藏
得分:2 
程序代码:
#include <stdio.h>
int main ()
{
    int m;
    double i=1.0,j=1.0,k,sum = 0.0;
    for (m=0;m<100 ;m++ )
    {
        sum = sum+i/j;
        k=j;
        j=k+i;
        i=k;
       
    }
    printf("%g\n",sum);
}
这个方法只能算n很小的时候,如果n很大,如果算前10000项的和,那就over了(可以将m<100改为10000试试)


另一种方法:这种方法能算n很大的时候,就算是算前100000项的和,也轻松搞定(可以将m<100改为m<100000试试)

程序代码:
#include <stdio.h>
int main ()
{
    int m;
    double a=0.0,b,sum = 0.0;
    for (m=0;m<100 ;m++ )
    {
        b = 1.0/(1+a);
        sum = sum+b;
        a=b;
    }
    printf("%f\n",sum);
}



[ 本帖最后由 mywaylgh 于 2010-3-12 14:24 编辑 ]

人生就像茶几 上面放着许多杯具

人生也像厨房 里面总有一些洗具
2010-03-12 13:56
嵇兵
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-3-12
收藏
得分:0 
相当感谢,可是我觉得你还是仔细看一下题目,呵呵
2010-03-12 14:13
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:2 
int main(void)
{
    int i;
    double u=1.0,d=1.0, tmp;
    double sum = 0.0, a;
    for (i = 0; i < 100; i ++)
    {
        printf("%f/%f \n", u, d);
        a = u/d;
        tmp = d;
        d = u+d;
        u = tmp;
        sum += a;
    }
    printf("sum = %f\n", sum);
}
2010-03-12 14:17
mywaylgh
Rank: 8Rank: 8
来 自:厨房
等 级:蝙蝠侠
威 望:5
帖 子:188
专家分:729
注 册:2010-3-10
收藏
得分:0 
就是你要的答案啊:)

第一种是笨方法,因为可能超出 MAX_DOUBLE的范围

第二种方法就不会了..

因为 3/5 = 1/(1+2/3)
      5/8 = 1/(1+3/5)......
      如此类推...
   就知道第二种方法了

人生就像茶几 上面放着许多杯具

人生也像厨房 里面总有一些洗具
2010-03-12 14:17
树上月
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:114
专家分:154
注 册:2010-1-6
收藏
得分:5 

设分子为a[]。分母为b[].分数为c[];
首先分析该数列的a[i]=a[i-1]+b[i-1].b[i]=a[i-1].c[i]=a[i]/b[i];
所以程序为:
#include<stdio.h>
int main()
{
    int a[100],b[100],i,n;
    double sum=0,c[100];
    printf("Enter n:");
    scanf("%d",&n);
    a[0]=b[0]=1;
    for(i=1;i<n;i++){
        a[i]=a[i-1]+b[i-1];
        b[i]=a[i-1];
        c[i]=b[i]*1.0/a[i];
        sum=sum+c[i];
    }
    printf("sum=%.6f\n",sum+1);
    return 0;
}
令n=100;即可得到答案sum=43.956868

每一个不曾起舞的日子,都是对未来的一种辜负......
2010-03-12 17:20
雾里偷花
Rank: 2
来 自:社会
等 级:论坛游民
帖 子:45
专家分:33
注 册:2009-10-27
收藏
得分:2 
程序代码:
#include <stdio.h>
int main(void)
{
    int i=1,b=0,sum=0;
    while (i<100)
    {
        b=i-b;
        sum+=2*i;
        i=i+b;
    }
    printf("%d\n",sum);
    getchar();
    return 0;
}
不知道是不是LZ想要的结果?
2010-03-12 23:38
邮贼
Rank: 2
等 级:论坛游民
帖 子:17
专家分:36
注 册:2010-3-5
收藏
得分:4 
#include<stdio.h>
main()
{
    float num, temp, up=1, down=1, sum=0;
    int i;

    for(i=1; i<=100; i++)
    {
        num=up/down;
        sum+=num;

        temp=up;
        up=down;
        down+=temp;
    }
    printf("%f\n", sum);
}
很简单的。。。
2010-03-12 23:48
saDMS
Rank: 1
等 级:新手上路
帖 子:12
专家分:9
注 册:2010-3-10
收藏
得分:5 
main()
{double sum=0.0;
 int a[100],b[100],i;
 a[100]={1,1};
 b[100]={1,2};
 for(i=2;i<100;i++)
 {a[i]=a[i-2]+a[i-1];
  b[i]=b[i-2]+b[i-1];
 sum+=a[i]/b[i];
}
printf("%ld",sum);
}
2010-03-13 00:32
快速回复:请教一道C编程题
数据加载中...
 
   



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

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