困扰我一个下午的编程题!
钱能C++教程4.10课后习题:
题目为:编程求解问题.若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第N年有多少头母牛?
找到有人做出来了:
4.10这题相对初学者还是有一定的难度,初学者应该好好体会一下
/*算法:用fnum,snum,tnum,sum分别表示每四年中的第一年,第二年,第三年,
第四年(也就是总数)的母牛数目,则每过一年sum=fnum+tnum(也就是去年的总数sum加上今年新生的,而今年新生的则是第一年时的母牛数目),fnum=snum,snum=tnum,tnum=sum,
说明:一般应该采用数组表示,但因为在书出这题时还没有讲解数组,因此没有用数组表示
*/
#include<iostream>
using namespace std;
void main()
{
int fnum=1,snum=1,tnum=1,sum=1,n;
cout<<"第";
cin>>n;
cout<<"年";
for(int i=4;i<=n;i++)
{
sum=fnum+tnum;
fnum=snum;
snum=tnum;
tnum=sum;
}
cout<<"母牛的数目是:"<<sum<<endl;
}
看样子还挺简单的.可是还是反应不过来.唉.笨死了我.
理清了思路,想出来一个算法.但明显思路和作者的相比相差太多.我基础太差.唉
void total2()
{
//a,b,c,d分别为处于第1,2,3,4(4年以上的)的牛的数目
int a=1,b=0,c=0,d=1,sum=0,n;
cout<<"第";
cin>>n;
cout<<"年";
for(int i=4;i<=n;i++)
{
a=d; //第一年的等于4年以上的牛的数目
d+=c; //第四年的在原来的基础上+第三年的
c=b; //第三年的等于第二年的数目
b=a; //第二年的等于第一年的数目
a=0; //第一年数目为0
}
sum=a+b+c+d;
cout<<"母牛的数目是:"<<sum<<endl;
}
题目为:编程求解问题.若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第N年有多少头母牛?
找到有人做出来了:
4.10这题相对初学者还是有一定的难度,初学者应该好好体会一下
/*算法:用fnum,snum,tnum,sum分别表示每四年中的第一年,第二年,第三年,
第四年(也就是总数)的母牛数目,则每过一年sum=fnum+tnum(也就是去年的总数sum加上今年新生的,而今年新生的则是第一年时的母牛数目),fnum=snum,snum=tnum,tnum=sum,
说明:一般应该采用数组表示,但因为在书出这题时还没有讲解数组,因此没有用数组表示
*/
#include<iostream>
using namespace std;
void main()
{
int fnum=1,snum=1,tnum=1,sum=1,n;
cout<<"第";
cin>>n;
cout<<"年";
for(int i=4;i<=n;i++)
{
sum=fnum+tnum;
fnum=snum;
snum=tnum;
tnum=sum;
}
cout<<"母牛的数目是:"<<sum<<endl;
}
看样子还挺简单的.可是还是反应不过来.唉.笨死了我.
理清了思路,想出来一个算法.但明显思路和作者的相比相差太多.我基础太差.唉
void total2()
{
//a,b,c,d分别为处于第1,2,3,4(4年以上的)的牛的数目
int a=1,b=0,c=0,d=1,sum=0,n;
cout<<"第";
cin>>n;
cout<<"年";
for(int i=4;i<=n;i++)
{
a=d; //第一年的等于4年以上的牛的数目
d+=c; //第四年的在原来的基础上+第三年的
c=b; //第三年的等于第二年的数目
b=a; //第二年的等于第一年的数目
a=0; //第一年数目为0
}
sum=a+b+c+d;
cout<<"母牛的数目是:"<<sum<<endl;
}
一点说明:为什么在标题中要嵌入英文?原因是为了能够让国外的网友能查询到这篇文章。平常在Google上查资料的时候,经常参考国外网友的博客,帮助我解决了很多问题,所以我也想让他们能够参考我写的内容。当然文中我不可能全部译为英文,所以我尽量把代码粘全,靠代码说话吧。



浙公网安备 33010602011771号