大家帮看下哪错了饿。c++的

王朝知道·作者佚名  2012-03-24
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡
 
問題描述:

//猴子吃桃问题。猴子第1天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天又将剩下的桃子吃掉一般,又多吃了一个。

//以后每天都如此,到第10天时发现只剩下一个桃子了。试编程求第1天共摘下多少桃子

#include<iostream>

using namespace std;

//===================================

int main()

{

int a[11]={0};

a[10]=1;

for(int i=10;i>=2;i--)

a[--i]=2*a[i]+1;

cout<<"猴子第一天共摘桃子数为:"<<a[1]<<endl;

return 0;

}

參考答案:

我用VISUAL C++6.0试了下 输出结果是1 啊,你再试试。

正确的编法如下:

#include<iostream>

using namespace std;

int main()

{

int a[11],i;

a[10]=1;

for(i=10;i>=1;i--)

a[i-1]=2*(a[i]+1);

cout<<"第一天猴子摘桃数目为"<<a[1];

return 0;

}

你的程序中有几个严重错误(虽然能通过编译),现分析下你的程序,int a[11]={0};相当于声明并赋值,包含了11个数的数组,每个数都为0(你定义了第一个为0,后面未定义 就默认为0);for循环中,“--i”是不对的,“--i”是先运算后赋值,i变为了i-1,从a[10]开始,a[--i]就是a[9],后面的a[i]也是a[9],已经说过数组的值全为0,2*a[9]+1为1;a[9]=1;判断后a[9]>=2;i--,i变为8;下次循环中a[i--]=1(就是i=i-1,i=7)直到a[2],a[1]=2*a[2]+1,a[1]=1;所以结果为 1.

其实算式应该是2*(a[i]+1)不是2*a[i]+1;具体看上面的程序吧。

还有注意声明与赋值。

写的比较罗嗦,不知你能看懂吗 ,呵呵。

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航