黑马程序员技术交流社区
标题:
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
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
long f1=1,f2=1;
for (int i=1; i<=12; i++) {
if (i<=2) {
printf("%d\t",1);
}
else{
long temp,temp1;
temp1 = f2;
temp = f1+temp1;
f2 = temp;
f1 =temp1;
printf("%ld\t",f2);
}
if (i%4==0) {
printf("\n");
}
}
return 0;
}
复制代码
看不懂楼主写的什么意思,这是我写的代码,能够实现每输入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