鱼C论坛

 找回密码
 立即注册
查看: 2865|回复: 13

兔子繁衍问题

[复制链接]
发表于 2020-1-12 22:10:53 | 显示全部楼层 |阅读模式

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

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

x
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?

输入格式:
输入在一行中给出一个不超过10000的正整数N。

输出格式:
在一行中输出兔子总数达到N最少需要的月数。

输入样例:
30

      
   
输出样例:
9
下面是我的,还是有些毛病,希望大佬指出
#include <stdio.h>

int main(void)
{
    int d;
    scanf("%d",&d);
    int f1=1,f2=1;
    int i,f3;
    
    if(d==1)
    {
        printf("%d\n",1);
    }
    else if(d==2)
    {
        printf("%d\n",1);
    }
    else if(d==0)
    {
        printf("%d\n",0);
    }
    else
    {
        for(i=3;;i++)
        {
            f3 = f1 + f2;
            if(f3>=d)
            {
            printf("%d\n",i);
            break;
            }
            f1 = f2;
            f2 = f3;
        }
    }


    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-12 22:35:08 | 显示全部楼层
以你的题义,我觉得这样就够了。
#include <stdio.h>

int main(void)
{
    int n;
   
    int f1=1,f2=1;
    int i,f3;

        scanf("%d",&n);

    for(i=3; f2<n; i++)
    {
        f3 = f1 + f2;
        f1 = f2;
        f2 = f3;
    }

        printf("%d\n", i-1);



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

使用道具 举报

 楼主| 发表于 2020-1-12 22:37:52 | 显示全部楼层
ba21 发表于 2020-1-12 22:35
以你的题义,我觉得这样就够了。
#include

还是有一个错误。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 22:40:14 | 显示全部楼层
最后的魁拔 发表于 2020-1-12 22:37
还是有一个错误。。。。

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

使用道具 举报

 楼主| 发表于 2020-1-12 22:45:01 | 显示全部楼层
ba21 发表于 2020-1-12 22:40
敢问有什么错误???????????

我也不清楚所以才问你们这些大佬的。。。。。
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 22:51:31 | 显示全部楼层
本帖最后由 jackz007 于 2020-1-12 22:54 编辑

        楼主测试一下这个代码呢?
#include <stdio.h>

int main(void)
{
        int a , b , c , k , n                                                     ;
        scanf("%d" , & n)                                                         ;
        for(a = 1 , b = 1 , k = 3 ; a + b < n ; c = a + b , a = b , b = c , k ++) ;
        printf("%d\n" , k)                                                        ;
}
        编译、运行实况:
C:\Bin>cl x.c
用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 16.00.30319.01 版
版权所有(C) Microsoft Corporation。保留所有权利。

x.c
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:x.exe
x.obj

C:\Bin>x
30
9

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

使用道具 举报

 楼主| 发表于 2020-1-12 22:54:25 | 显示全部楼层
jackz007 发表于 2020-1-12 22:51
编译、运行实况:

上面还是显示有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 22:55:32 | 显示全部楼层
最后的魁拔 发表于 2020-1-12 22:54
上面还是显示有问题

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

使用道具 举报

 楼主| 发表于 2020-1-12 22:58:02 | 显示全部楼层

就是我上面发的那张图片。。。。只显示有错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 23:01:25 | 显示全部楼层
最后的魁拔 发表于 2020-1-12 22:45
我也不清楚所以才问你们这些大佬的。。。。。

你难道不会点下 感叹号?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-12 23:06:00 | 显示全部楼层
ba21 发表于 2020-1-12 23:01
你难道不会点下 感叹号?

点感叹号又不会显示具体的错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 23:30:16 | 显示全部楼层
那就别在这平台做了,leetcode它不香么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 23:58:13 | 显示全部楼层
最后的魁拔 发表于 2020-1-12 22:58
就是我上面发的那张图片。。。。只显示有错误


      本例是标准的斐波那契数列问题,该数列第 8、9项的值分别是 21 和 34,所以,当 N = 30 的时候,9 无疑是正确答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-13 14:41:45 | 显示全部楼层

#include<stdio.h>
#include<stdlib.h>
int main()
{
        int m,n,tmp;
        int Fib(int m);
        void display(int tmp);

        printf("输入两个正整数m和n(1<=m<=n<=10000)");
        scanf_s("%d%d",&m,&n);
        while (m<=n)

        {

                tmp=Fib(m);
                display(tmp);
                m=m++;
               
        }

        system("pause");
        return 0;

}
int Fib(int m)
{
       
        int num1 = 1;
        int num2 = 1;
        int tmp = 0;
        int i = 0;
        if (m < 3)
        {
                return 1;
        }
        else
        {
                for (i = 0; i<=m-3; i++)
                {
                        tmp = num1 + num2;
                        num1 = num2;
                        num2 = tmp;
                       
                }
                return tmp;
       
}

}
void display(int tmp)
{
        printf("%d\n",tmp);
}

有点粗糙但是肯定是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 07:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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