| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1576 人关注过本帖
标题:输入大于2的数输出都为1
只看楼主 加入收藏
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
收藏
得分:2 
#include <stdio.h>
int main()
{
    int n, i;
    double sum, a, b, t;
    while (scanf("%d",&n)!=EOF) {
        if (n == 0)
            return 0;
        a = 2.0, b = 1.0, sum = 0.0;
        for (i = 1; i <= n; i++) {
            sum += a/b;
            t = b, b = a;
            a = a + t;
        }
        printf("%.2lf\n", sum);
    }
}

好好学习,天天想上
2013-11-01 16:12
无果分
Rank: 1
等 级:新手上路
帖 子:22
专家分:1
注 册:2013-10-26
收藏
得分:0 
回复 10楼 古道风
七楼的话,他都没有输出直接打印出来了,不合题目
2013-11-01 16:12
无果分
Rank: 1
等 级:新手上路
帖 子:22
专家分:1
注 册:2013-10-26
收藏
得分:0 
回复 21楼 zhaogay
谢谢,这个可以,能不能用递归做?
2013-11-01 16:13
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
收藏
得分:0 
回复 23楼 无果分
递归?每项的关系貌似不明显,不知道可不可以直接递归。分开算分母和分子是可以明显的递归,但是到了几百项之后估计很慢了。等结果估计也要好长时间。可能有其他的办法,,坐等大神

好好学习,天天想上
2013-11-01 16:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用无果分在2013-11-1 16:12:22的发言:

七楼的话,他都没有输出直接打印出来了,不合题目
难道你只会用现成的代码吗

DO IT YOURSELF !
2013-11-01 16:32
无果分
Rank: 1
等 级:新手上路
帖 子:22
专家分:1
注 册:2013-10-26
收藏
得分:0 
回复 25楼 wp231957
当然不是,如果只要那个结果我来干嘛,好像不少支持七楼,所以说下而已,
2013-11-01 16:46
古道风
Rank: 2
等 级:论坛游民
帖 子:12
专家分:17
注 册:2013-9-16
收藏
得分:0 
回复 22楼 无果分
好吧,我错了,我以为你是要编程的思想,原来你只是要一个和21楼一样的结果,下面的是我根据七楼的改的

#include<stdio.h>

int main()
{
    double first_i=2.00;
    double first_j=1.00;
    double tmp1=0.00;
    double tmp2=0.00;
    double cal=0.00;
    int n=0;
    int k;
   
    while(scanf("%d",&k)!=EOF)  
    {
        cal+=first_i/first_j;
        tmp1=first_i;
        tmp2=first_j;
      
     
        first_i=tmp1+tmp2;
        first_j=tmp1;
        n++;
        if(n>k) break;
        printf("%.4f\n",cal);
           printf("\n");
     
    }
   
    return 0;
}
还可以进一步改成2/1+3/2=3.5这样的输出形式。
编程要注意变通。
2013-11-01 16:52
无果分
Rank: 1
等 级:新手上路
帖 子:22
专家分:1
注 册:2013-10-26
收藏
得分:0 
回复 27楼 古道风
first_i   
first_j   
 tmp1    tmp2     cal;
        这些是自己定义的变量是吗
谢谢
               
         
2013-11-01 16:56
古道风
Rank: 2
等 级:论坛游民
帖 子:12
专家分:17
注 册:2013-9-16
收藏
得分:0 
回复 28楼 无果分
是的。编程都是把自己想的编成自己写的,学其他人编程的思想,至于格式可以自己来动手改进
2013-11-01 17:03
rchunjiang
Rank: 4
来 自:大连
等 级:业余侠客
帖 子:42
专家分:262
注 册:2013-10-25
收藏
得分:2 
分子分母的构成都是斐波那契数列,可以递归,lz要的是这样的程序吧
程序代码:
int Fibonacci(int n)
{
    if (n==1)
        return 1;
    if (n==2)
        return 2;
    else
        return Fibonacci(n-1)+Fibonacci(n-2);
}
double func(int n)
{
    if (n==0)
        return 0;
    if(n==1)
        return 2.0/1;
     if(n==2)
         return 2.0/1+3.0/2;
     else
         return func(n-1)+(double)Fibonacci(n+1)/(double)Fibonacci(n);
}
int main()

 {
     int n;
     //while(scanf("%d",&n)!=EOF)
     while(scanf_s("%d",&n)!=EOF)
     {
         printf("%f\n",func(n));
     }
     return 0;

 }
当n较大时,运行起来有点慢
2013-11-01 19:54
快速回复:输入大于2的数输出都为1
数据加载中...
 
   



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

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