河北青少年软件编...吧 关注:19贴子:192
  • 23回复贴,共1

第十课 知道兔子的繁殖能力有多强大吗?我们尝试让电脑模拟一下

只看楼主收藏回复

Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:若有一只免子每个月生一只小免子,一个月后小免子也开始生小兔子了。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)......。
如果不太理解这个例子的话,画个图就知道了,注意新生的小免子需一个月成长期才会生小兔子,类似的道理也可以用于植物的生长,这就是Fibonacci数列,一般习惯称之为费氏数列,例如以下: 1、1 、2、3、5、8、13、21、34、55、89......
如果求N(代表任意月份)个月后有多少只兔子,用程序怎么计算呢?
我们用C语言编一个最简单的程序来解决这个问题,这里我们用到了数组知识。
#include <stdio.h> //头文件
#define N 20 //宏定义,这里我们就求第20个月的兔子数量吧
int main(void)
{
int Fib[N] = {0};
//创建了一个数组,并初始化,把每个成员都设为0.还记得scratch中我们讲过数组的概念,自己回忆一下.
int i;
Fib[0] = 0; //数组的第0位置0,还记得吧,电脑是从0开始计数的
Fib[1] = 1; //数组的第1位置0
for(i = 2; i < N; i++) //循环起来
Fib[i] = Fib[i-1] + Fib[i-2]; //这个你该懂得,小班Scratch都讲过
for(i = 0; i < N; i++) //循环起来
printf("%d ", Fib[i]); //把每个月的兔子数量依次打印出来
printf("\n");
return 0;
}
自己尝试更换一个月份试一下,数组后面老师还会详细讲解,自己先体验一下。
备注:有些Win10的系统在给程序起名字时,不支持空格,而notepad默认起名字时带一个空格,例如new 1.cpp,记得一定要把那个空格去除,否则可能编译不过去。


IP属地:河北1楼2019-08-23 17:19回复
    庞浩正
    #include <stdio.h> //头文件
    #define N 36
    int main(void)
    {
    int Fib[N] = {0};
    int i;
    Fib[0] = 0;
    Fib[1] = 1;
    for(i = 2; i < N; i++)
    Fib[i] = Fib[i-1] + Fib[i-2];
    for(i = 0; i < N; i++)
    printf("%d ", Fib[i]*2);
    printf("\n");
    return 0;
    }


    2楼2019-08-28 14:42
    收起回复
      #include <stdio.h>
      #define N 36
      int main(void)
      {
      int Fib[N] = {0};
      int i;
      Fib[0] = 0
      Fib[1] = 1;
      for(i = 2; i < N; i++)
      Fib[i] = Fib[i-1] + Fib[i-2];
      for(i = 0; i < N; i++)
      printf("%d ", Fib[i]*2);
      printf("\n");
      return 0
      }
      杨烨硕


      来自Android客户端3楼2019-08-28 20:57
      收起回复
        求平均值程序
        #include<iostream>
        using namespace std;
        int main()
        {
        unsigned int age =0,quantity;
        unsigned int ave_age[100]={0};
        cout<<"please enter student quantity:"<<endl;
        cin>>quantity;
        for(int i =0;i<=quantity-1;i++)
        {
        cout<<"please enter age:"<<endl;
        cin>>ave_age[i];
        }
        for(int i =0;i<=quantity-1;i++)
        {
        age +=ave_age[i];//age = age + ave_age[i]
        }
        age /= quantity;
        cout<<"The average age = "<<age<<endl;
        }


        IP属地:河北11楼2019-09-01 12:12
        回复
          #include <stdio.h>
          #define N 36
          int main(void)
          int Fib[N] = {0};
          {
          int i;
          Fib[0] = 0;
          Fib[1] = 1;
          for(i = 2; i < N; i++)
          Fib[i] = Fib[i-1] + Fib[i-2];
          for(i = 0; i < N; i++)
          printf("%d ", Fib[i]);
          printf("\n");
          }


          13楼2019-09-04 19:35
          收起回复
            庞浩正
            只用两个变量的斐波那契数列
            #include<iostream>
            using namespace std;
            int main()
            {
            int i,a=0,b=1;
            cout<<a<<" "<<b;
            cout<<" "<<a+b;
            a=b;
            for(i=4;i<=40;i++)
            {
            cout<<" "<<a+b;
            if(i%10==0)
            cout<<endl;
            b=a+b;a=b-a;
            }
            }


            14楼2019-09-07 15:10
            回复


              15楼2019-09-07 15:15
              收起回复
                庞浩正,运行结果


                16楼2019-09-07 15:16
                回复
                  庞浩正——求一百以内有多少个质数。
                  #include<iostream>
                  using namespace std;
                  int main()
                  {
                  int n,i;
                  for(n=1;n<=100;n++)
                  {
                  i=2;
                  while(n%i!=0&&i<=n-1)
                  i++;
                  if(i>n-1&&n!=1&&n!=0)
                  {cout<<n<<endl;
                  cout<<" "<<endl;}
                  }
                  }


                  17楼2019-09-08 15:12
                  收起回复
                    运行结果


                    18楼2019-09-08 15:16
                    回复
                      #include <iostream>
                      using namespace std;
                      int main()
                      {
                      int i, j, n = 0,s;
                      cin>>s;
                      for(i=2; i<=s; i++)
                      {
                      for(j=2; j<=i; j++)
                      {
                      if(j == i)
                      {
                      cout<<i<<',';
                      n++;
                      if(n % 8 == 0)
                      cout<<endl;
                      }
                      if(i % j == 0)
                      break;
                      }
                      }
                      }


                      19楼2019-09-10 21:41
                      回复


                        20楼2019-09-10 22:00
                        收起回复


                          22楼2019-09-12 22:31
                          回复
                            庞浩正 质数
                            #include<iostream>
                            using namespace std;
                            int main()
                            {
                            int n,i;
                            for(n=1;n<=100;n++)
                            {
                            i=2;
                            while(n%i!=0&&i<=n-1)
                            i++;
                            if(i>n-1&&n!=1&&n!=0)
                            {cout<<n<<endl;
                            cout<<" "<<endl;}
                            }
                            }


                            26楼2019-09-14 11:19
                            回复


                              27楼2019-09-14 11:23
                              回复