约定:小兔子(xtz)一个月后变为中兔子(ztz),中兔子一个月后变成大兔子(dtz)
由于:
每个月的大兔子数目为上个月大兔子数目与上个月中兔子数目之和;
每个月的中兔子数目为上个月小兔子数目;
每个月的小兔子数目为本月大兔子数目。
故
- /*
- 一对小兔子在出生两个月后每个月都生出一对小兔子。
- 如果所有兔都不死,那么半年以后可以繁殖成多少对兔子?
- */
- #include <stdio.h>
- #include <stdlib.h>
- int main( void )
- {
- int xtz = 1 , ztz = 0 ,dtz = 0 ;//小兔子,中兔子,大兔子数目
-
- //一个月后
- dtz += ztz ; // 大兔子数增加 ztz 对
- ztz = xtz ; // 中兔子数为上月小兔子数
- xtz = dtz ; // 小兔子数为本月大兔子数
-
- //二个月后
- dtz += ztz ; // 大兔子数增加 ztz 对
- ztz = xtz ; // 中兔子数为上月小兔子数
- xtz = dtz ; // 小兔子数为本月大兔子数
-
- //三个月后
- dtz += ztz ; // 大兔子数增加 ztz 对
- ztz = xtz ; // 中兔子数为上月小兔子数
- xtz = dtz ; // 小兔子数为本月大兔子数
-
- //四个月后
- dtz += ztz ; // 大兔子数增加 ztz 对
- ztz = xtz ; // 中兔子数为上月小兔子数
- xtz = dtz ; // 小兔子数为本月大兔子数
- //五个月后
- dtz += ztz ; // 大兔子数增加 ztz 对
- ztz = xtz ; // 中兔子数为上月小兔子数
- xtz = dtz ; // 小兔子数为本月大兔子数
-
- //六个月后
- dtz += ztz ; // 大兔子数增加 ztz 对
- ztz = xtz ; // 中兔子数为上月小兔子数
- xtz = dtz ; // 小兔子数为本月大兔子数
-
- printf("半年以后可以繁殖成%d对兔子\n" , xtz + ztz + dtz );
-
- system("PAUSE");
- return 0;
- }
由于xtz,ztz,dtz这几个变量不但用于记录前一个月兔子的数量,也用于记录本月兔子的数量,一定要确保前面的数据不再使用之后才能改变其值。因此
dtz += ztz ; // 大兔子数增加 ztz 对
ztz = xtz ; // 中兔子数为上月小兔子数
xtz = dtz ; // 小兔子数为本月大兔子数
的计算次序一定不能弄错。事实上,Program(程序)这个词本身就包含“次序”的含义。
阅读(1743) | 评论(0) | 转发(0) |