兔子产子问题:
有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?
根据题意列出表格:
根据表格分析出第一,二月兔子总数为1,从第三月开始兔子总数等于该月前面两个月兔子总数之和。
解题思路:
运用数组的知识,给a[1]以及a[0]赋值,利用a[i]=a[i-1]+a[i-2]算出每个月的总数,数组的下表等于月数减1,按照规定的格式输出每月的总数即可。
代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[30]={1,1};\\前两个月总数赋值
cout<<setw(12)<<a[0]<<setw(12)<<a[1];\\按格式输出前两个月总数
int temp=2;\\记录数据来输出换行
for(int i=2;i<30;i++)\\根据前两个月总数求每月总数
{
a[i]=a[i-1]+a[i-2];
temp++;
cout<<setw(12)<<a[i];
if(temp%4==0)
{
cout<<endl;
temp=0;
}
}
return 0;
}
解题思路:
利用迭代法求出每个月的总数并直接输出
代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int f1=1,f2=1,f;
cout<<setw(12)<<f1<<setw(12)<<f2;
for(int i=3;i<31;i++)
{
f=f1+f2;
cout<<setw(12)<<f;
f1=f2;
f2=f;
if(i%4==0)
cout<<endl;
}
return 0;
}
拓展:
仅利用f1与f2来储存月份的兔子总数
代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int f1=1,f2=1;
for(int i=1;i<16;i++)
{
cout<<setw(12)<<f1<<setw(12)<<f2;
f1=f1+f2;
f2=f1+f2;
if(i%2==0)
cout<<endl;
}
return 0;
}
该题体会:利用数组可以储存数据在需要时利用,学会了迭代法的利用以及如何改善迭代法
标签:f1,f2,cout,产子,int,兔子,问题,include From: https://www.cnblogs.com/zljzy/p/17309196.html