黑马程序员技术交流社区

标题: C语言 关于多少只兔子的问题??? [打印本页]

作者: aofex    时间: 2015-6-22 22:36
标题: C语言 关于多少只兔子的问题???
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

#include <stdio.h>
int main ()
{
    long f1,f2;
    int i;
    f1=f2=1;
    for(i=1; i<=10; i++)
    {
        printf("%12ld%12ld",f1,f2);
        if(i%2==0)
        {
            printf("\n");//控制输出每行四个

        }
        f1=f1+f2;//前2个月加起来赋值给第三个月
        f2=f1+f2;//前2个月加起来赋值给第三个月

        //printf("%d",i);
    }
    return 0;
}

问题1:当i=12的时候为什么输出的是24个月啊?
问题2:(i%2==0)为什么是控制每行是4个?
问题3:f1=f1+f2了都怎么第二个月输出还是1啊?
本人新手实在看不懂,各位高手不要笑话我哈!!!!
作者: 杨庆庆    时间: 2015-6-22 22:48
把变量都定义为整形,你这样知己都把自己绕蒙了.......兄弟
作者: 丁铭检    时间: 2015-6-23 09:53
学习了。。。。
作者: aludiba    时间: 2015-6-23 11:34
int test(int n)
{
    if (n==1||n==2)
    {
        return 2;
    }
    return test(n-2)+test(n-1);
}
可以用递归方法,编个函数来求
作者: 白0702    时间: 2015-6-23 11:35
  1. #include <stdio.h>

  2. int main(int argc, const char * argv[]) {
  3.     // insert code here...
  4.     long f1=1,f2=1;
  5.     for (int i=1; i<=12; i++) {
  6.         if (i<=2) {
  7.             printf("%d\t",1);
  8.         }
  9.         else{
  10.             long temp,temp1;
  11.             temp1 = f2;
  12.             temp = f1+temp1;
  13.             f2 = temp;
  14.             f1 =temp1;
  15.             printf("%ld\t",f2);
  16.         }
  17.         if (i%4==0) {
  18.             printf("\n");
  19.         }
  20.         
  21.     }
  22.     return 0;
  23. }
复制代码

看不懂楼主写的什么意思,这是我写的代码,能够实现每输入4个换行,你那个是每输入2个换行,希望对你有帮助,共同学习!
作者: 小小羊    时间: 2015-6-23 12:50
使用递归函数试试看
作者: sdzh    时间: 2015-6-23 14:13
楼上都是高手,这里我只针对楼主提的问题作答:


问题1:当i=12的时候为什么输出的是24个月啊?
解答:
你有没有注意到,在for循环内的 printf("%12ld%12ld",f1,f2);
也就是说,你没循环一次就打印两个月的数字;

问题2:(i%2==0)为什么是控制每行是4个?
解答:如果你明白问题1,那么这你应该也能懂了吧。
(i%2==0)意识是循环两次就换行,而你没循环一次就能打印两个数,也就造成了控制每行4个的结果。

问题3:f1=f1+f2了都怎么第二个月输出还是1啊?
解答:原因是在执行 f1=f1+f2之前就已经输出一月和二月的数了

作者: aofex    时间: 2015-6-23 20:32
sdzh 发表于 2015-6-23 14:13
楼上都是高手,这里我只针对楼主提的问题作答:

哥儿们 感谢了啊 明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2