题目描述
你买了一对兔子,一公一母,从三个月大开始,它们每个月生下了一对小兔子 (默认生出来的都是一公一母),小兔子三个月之后也会开始生小小兔,请问第 n 个月,兔子一共有的对数是(要求自己输入 n 的具体数值,运行程序后可获得答案)
提示:利用 for 循环求和。
要求:保证程序的健壮性(当输入不合要求的数 字时,程序不会出现卡死等其他情况);养成写注释的习惯是非常必要的!在重 要的语句后面写上注释。
输入:5
输出:有 12 对兔子
源代码
#include <stdio.h>
int main() {
int month;
int rabbitPairs[100]; // 用于存储每个月的兔子对数,最多支持计算100个月
printf("请输入月份:");
scanf("%d", &month);
// 初始时只有一对兔子,即第一个月的兔子对数为1
rabbitPairs[0] = 1;
// 利用循环计算每个月的兔子对数
for (int i = 1; i < month; i++) {
// 前两个月的兔子对数为上一个月的兔子对数加上1(一公一母)
if (i == 1 || i == 2) {
rabbitPairs[i] = rabbitPairs[i - 1] + 1;
}
// 从第三个月开始,兔子对数为上一个月的兔子对数加上前两个月的兔子对数
else {
rabbitPairs[i] = rabbitPairs[i - 1] + rabbitPairs[i - 2];
}
}
// 计算总兔子对数
int totalPairs = 1; // 初始时只有一对兔子
for (int i = 2; i <= month; i++) {
totalPairs += rabbitPairs[i - 2];
}
printf("第%d个月,有%d对兔子\n", month, totalPairs);
return 0;
}
题目中给出的初始兔子对数为1,而不是2。因此,我们需要在计算总兔子对数的循环中,将初始值设置为1。另外,由于小兔子是从第三个月开始生的,所以在计算总兔子对数时,要从第二个月开始循环,并累加每个月的兔子对数。
最后,输出第n个月的总兔子对数。
运行截图
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END