鱼C论坛

 找回密码
 立即注册
查看: 1098|回复: 14

[已解决]超级简单

[复制链接]
发表于 2020-11-21 20:56:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
        int a=1,b=2,c=3,sum=0;
        while(c<=4000000)
        {
                if(c%2==0)
                {
                        sum=sum+c;
                }
                c=a+b;
                a=b;
                b=c;
               
        }
        printf("%d",c);
        return 0;
}

//我这个答案多了100多万,大佬们看看哪里错了。
最佳答案
2020-11-21 22:40:18
按你编写的程序,逻辑错误只有一处,先a=b;b=c才能c=a+b。你的那个先c=a+b,之后b=c时,b也被赋值成了a+b。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-21 20:57:26 | 显示全部楼层
请编写程序,找出斐波那契数列中数值不超过 4 百万的项,并计算这些项中值为偶数的项之和。s[F*q4oT5N
67eV0" #~PXc|qI-5jzK)>stkYw
斐波那契数列中,从第三项开始,每一项被定义为前两项的数字之和。]@Z!I[,)x
}wh>aoet'H=E86SKABy3q
从 1 和 2 开始,斐波那契数列的前 10 项应该是这样:1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

评分

参与人数 1贡献 +1 收起 理由
昨非 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-21 22:40:18 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
按你编写的程序,逻辑错误只有一处,先a=b;b=c才能c=a+b。你的那个先c=a+b,之后b=c时,b也被赋值成了a+b。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-21 22:43:49 From FishC Mobile | 显示全部楼层
当然细节上和题目要求也不匹配,这个sum肯定应该被输出,而且最后要把第二项数字2加上,而且找出所有的斐波那契数是要分别打印吗?那还要在while循环体内对c进行输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-22 00:29:12 | 显示全部楼层
本帖最后由 jackz007 于 2020-11-22 00:36 编辑
#include <stdio.h>

int main(void)
{
        int a , b , c , sum            ;
        for(sum = c = 0 , a = b = 1 ; c < 4000000 ; a = b , b = c) {
                c = a + b              ;
                if(! (c % 2)) sum += c ;
        }
        printf("%d\n" , c)             ;
}
        编译、运行实况
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
4194432

D:\00.Excise\C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-22 02:43:24 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-11-22 02:44 编辑
从 1 和 2 开始,斐波那契数列的从 1 和 2 开始,前 10 项应该是这样:1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

不对! 从 1 和 2 开始,斐波那契数列的前 10 项应该是这样:1, 1, 2, 3, 5, 8, 13, 21, 34, 55,  ...
#include<stdio.h>

void main()
{
        int i = 0, sum = 1;
        int f1 = 1;
        int f2 = 1;

        while (i < 20)
        {
                f1 = f1 + f2;                            // 计算出下一个数,并存放于 f1 中
                f2 = f2 + f1;                            // 计算出下两个数,并存放于 f2 中
                if (f1 <= 4000000 && f2 <= 4000000)
                {
                        sum += f2;
                        
                }
                else
                        break;
                i++;
        }
        printf("%d\n", sum);

}

**********************************************
sum = 3524577
Press any key to continue ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-22 09:52:26 | 显示全部楼层
风过无痕1989 发表于 2020-11-22 02:43
不对! 从 1 和 2 开始,斐波那契数列的前 10 项应该是这样:1, 1, 2, 3, 5, 8, 13, 21, 34, 55,  ...

...

答案是4613732
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-22 10:02:04 | 显示全部楼层

你要求的是偶数项和,不是前 N 项的和哟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-22 10:03:13 | 显示全部楼层
倒戈卸甲 发表于 2020-11-21 22:40
按你编写的程序,逻辑错误只有一处,先a=b;b=c才能c=a+b。你的那个先c=a+b,之后b=c时,b也被赋值成了a+b。

嗯,但是我发现,我打印错了,她打印的sum,我打印的是c。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-22 10:24:41 | 显示全部楼层
风过无痕1989 发表于 2020-11-22 10:02
你要求的是偶数项和,不是前 N 项的和哟

但是标准答案就是4613732
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-22 10:33:14 | 显示全部楼层

我修改了一下程序,将斐波拉契数列全部列出,你可用手机或电脑上的计算器逐项验证计算,你说的 4613732 是不对的( 再说 4613732 超过了 4000000 )!
#include<stdio.h>

void main()
{
        int i = 0, sum1 = 1,sum2 = 1,sum = 0;
        int f1 = 1;
        int f2 = 1;

        printf("%d %d ", f1, f2);                    // 输出数列前两个 1
        while (i < 20)
        {
                f1 = f1 + f2;                            // 计算出下一个数,并存放于 f1 中
                f2 = f2 + f1;                            // 计算出下两个数,并存放于 f2 中
                if (f1 <= 4000000 && f2 <= 4000000)
                {
                        sum1 += f1;
                        sum2 += f2;
                        sum = sum1 + sum2;

                }
                else
                        break;
                i++;
                printf("%d %d ", f1, f2);
        }
        printf("\n");
        printf("\n");
        printf("奇数项和为:%d \n", sum1);
        printf("偶数项和为:%d \n", sum2);
        printf("前 32 项总和为:%d \n", sum);
        printf("\n");

}

****************************************
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309

奇数项和为:2178309
用数项和为:3524577
前32项总和为:5702886
请按任意健继续 . . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-22 10:51:03 | 显示全部楼层
风过无痕1989 发表于 2020-11-22 10:33
我修改了一下程序,将斐波拉契数列全部列出,你可用手机或电脑上的计算器逐项验证计算,你说的 4613732  ...

大佬,你这个好像也没有问题。。。。。(我现在有点懵了)你看看我这输出啊
#include<stdio.h>
int main()
{
        int a=1,b=2,c=0,sum=0;
        while(c<4000000)
        {
                if(b%2==0)
                {
                        sum=sum+b;
                }
                        c=a+b;
                a=b;
                b=c;
        }
        printf("%d",sum);
        return 0;
}

//我是要输出这个数列,前4000000的偶数项和
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-22 10:57:54 | 显示全部楼层
风过无痕1989 发表于 2020-11-22 10:33
我修改了一下程序,将斐波拉契数列全部列出,你可用手机或电脑上的计算器逐项验证计算,你说的 4613732  ...

我知道了,你这个最后还少了一项,就是1346269+2178309==3524578

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
昨非 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-22 11:00:57 | 显示全部楼层
严凯 发表于 2020-11-22 10:51
大佬,你这个好像也没有问题。。。。。(我现在有点懵了)你看看我这输出啊
#include
int ma ...

斐波拉契的 f1 是奇数项,f2 是偶数项,我的程序用的就是 f2 累加和,在 f1、f2 有一项达到 4000000 时中断循环

你的程序是不是斐波拉契数列的算法,我没有去验证。现在也没有必要去验证了,你已经结帖了,说多了都是废话了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-22 11:06:37 | 显示全部楼层
风过无痕1989 发表于 2020-11-22 11:00
斐波拉契的 f1 是奇数项,f2 是偶数项,我的程序用的就是 f2 累加和,在 f1、f2 有一项达到 4000000 时中 ...

。。。。。。

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
昨非 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 13:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表