关于猴子吃桃问题猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾有多吃了一个,第二天早上又将剩下的

我编的程序是这样的:看看编得对不对
#include <stdio.h>
int main()
{double i=1,k;//i为桃子数,k为天数
int j;
for(;i<100000;i++)
{
i=j;
for(k=1;k<=10;k++)
if(j%2==0)j=i-1;
if(j==1)printf("%d",i);//判断最后一天的桃子数是否为一个。
}
}

用递归法:程序如下:
#include "stdio.h"
int qitao(int n);/*在主函数之前作调数函数说明*/
void main()
{
int tianxu;/*定义变量天数*/
int taozixu;/*定义变量桃子数*/
printf("请输入天数:");/*在屏幕上显示天数输入说明*/
scanf("%d",&tianxu);/*获取用户输入天数给变量tianxu*/
taozixu= qitao(tianxu);/*调用自定义函数qitao(int n)*/
printf("第一天的总桃子数目为%ld",taozixu);/*在屏幕上打印出桃子的总数*/

}
int qitao(int n)/*自定义函数qitao(int n)以计算n天前的桃子数目*/
{
int x;/*定义函数返回值即桃子总数*/
if(n==1)/*如果是最后一天时*/
x=1;/*桃子在最后一天时数目*/
else
x=2*(qitao(n-1)+1);/*前一天的桃子数目等于后一天数量加1乘2*/
return x;/*递归返回桃子数*/

}

别外根据你实在的要求是想人家帮你修改你的程序,你的算法其实也是可以算出来的,你是假设了一个很大的数域里面存在着一个数,它经过10天后,就是1,不过你写的程序不对,应修改如下:
#include <stdio.h>
void main()
{
long int i=1,k;//i为桃子数,k为天数
long int j;
for(i=1;i<100000;i++)

{j=i;
if(j%2==0)
{
for(k=1;k<10;k++)
{ j=j/2-1;
}
if(j==1)//判断最后一天的桃子数是否为一个。
goto aa;
}
}

aa:printf("%d",i);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-08
# include <stdio.h>
int main(void)
{
int n=1, i; //n为第十天的总数,i 为天数
for(i=1; i<10; i++)
{
n=2*(n+1);
}
printf("总桃子数为:%d\n", n);
return 0;
}
第2个回答  2011-04-30
不要在循环内部改变i的值,这样的循环最好用while再内部判断是否符合条件使用break打断退出循环
天数 N
int i=0, x=0;
while(1)
{
i++;
x++;
if(x==N)
{
break;
}
i<<2;
}方法是这样,自己再仔细算算
循环里具体该如何算
第3个回答  2017-10-31
Python可以这样做
i=1
s=1
for i in range(10):
i=s+1+1
s=s+i
print(s)
猴子第一天摘下若干个桃子,当即吃了一半,好不过瘾,又多吃了一个。第二天早上又吃了剩下的桃子的一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个,到第 10 天早上想再吃的时候,就剩下一个桃子。求第一天共摘多少个桃子
第4个回答  2011-04-30
可以这样的:
#inclide<stdio.h>
void main()
{int x1,x2,day;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;
x2=x1;
day--;
}
printf("%d",x1);
}
相似回答