请用C语言编写一个程序,“猴子吃桃”问题

请编写一个程序,采用递推法完成下述猴子吃桃的问题:猴子得到一堆桃,当天吃了一半之后,又多吃了1个。以后每天,猴子都吃了剩余的一半桃子之后,又多吃一个。在第10天,只剩下1个桃子。输出这堆桃最初有多少个。

如果真是吃到了第10天,我想说这TMD还是猴子吗?第一天就会撑死!

C代码在线运行工具

#include <stdio.h>
 
int main()
{
    int day = 10;
    int sum = 0;
    int i = 0;
     
    sum = 1;
    for (i = day; i >= 1; i--)    //吃之后算法
    {
        sum = (sum + 1) * 2;
    }
    printf("第 %d 天吃之后还剩1个,最初有 %d 个桃子,", day, sum);
    printf("第 1 天吃了 %d 个桃子;\r\n", sum / 2 + 1);
     
    sum = 1;
    for (i = day-1; i >= 1; i--)  //吃之前算法
    {
        sum = (sum + 1) * 2;
    }
    printf("第 %d 天吃之前还剩1个,最初有 %d 个桃子,", day, sum);
    printf("第 1 天吃了 %d 个桃子。\r\n", sum / 2 + 1);
     
    return 0;
}

   

第 10 天吃之后还剩1个,最初有 3070 个桃子,第 1 天吃了 1536 个桃子;

第 10 天吃之前还剩1个,最初有 1534 个桃子,第 1 天吃了 768 个桃子。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-13
#include<stdio.h>
int N; //吃到N天还没吃时,剩1个,全局变量
int funn(int n)
{
if(n==N)
return 1;
else
return 2*funn(++n)+2;
}
int main()
{
int days,y;
printf("输入多少天后剩一个\n");
scanf("%d",&N);
for(days=1;days<=N;days++)
{
y=funn(days);
printf("days%d\t%d\n",days,y);
if(y<0)
{
printf("有误");
break;
}
}
}
FOR循环
#include <stdio.h>
main()
{
int days,n;
for(days=10,n=1;days>0;days--)
{
printf("days%d\t%d个\n",days,n);
n=2*n+2;
}
}
第2个回答  2019-05-07
我实在想不通为什么他们能写这么多
int n = 1;//n为桃子数量
for (int i = 0; i < 9; i++) {//9次循环 因为第十天 他没得吃
n = (n + 1) * 2;
}
printf("%d", n);
结果为1534 这个数据就是正确答案
第3个回答  2019-03-05
#include<stdio.h>
int main()
{
int i,sum=0;
for(i=1;i<=10;i++)
sum=2*sum+1;
printf("%d\n",sum);
return 0;
}
结果:
1023
第4个回答  2018-02-02
#include<iostream.h>
int main()
{
int i,j,sum;
i=9;
sum=1;
while(i>=1)
{
sum=(sum+1)*2;
i--;
}
cout<<"一共的桃子数:"<<sum<<endl;
return 0;
}

猴子吃桃问题c语言
putchar ('\\n'); printf("猴子第一天摘了%d个桃子!\\n", num)

请用C语言编写一个程序,“猴子吃桃”问题
1;\/\/n为桃子数量 for (int i = 0;i < 9;i++){\/\/9次循环 因为第十天 他没得吃 n = (n + 1)2;} printf("%d",n);结果为1534 这个数据就是正确答案

C语言编程猴子吃桃子问题
猴子只吃了99次。第100次还没吃呢。只是这求到100天之前,这数字也是太大了吧?int早就溢出了。用double只能保证前面的大数正确,后面的尾数就全变为0了(否则要使用高精度计算,编程代码就复杂多了):include<stdio.h>int main(){int day=99;double x1,x2=1; while(day) {x1=(x2+1)*2...

c语言猴子吃桃子问题怎么做?
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File 2、题目:猴子吃桃:猴子第1天摘下若干个桃子,当即吃掉一半多1个桃子,第2天早上又将剩下的桃子吃掉一半多1个,以后每天都吃掉前天一半多1个,到第10天早上只剩下一个桃子,求第1天猴子到底摘子多少个桃子?3、输入预处理命令和主函数...

大神帮忙解决C语言猴子吃桃的问题
;return peach;}else{peach = (monkey_eat_peach(day + 1, n, m) + 1) * 2;printf("第%d天,有%d个桃子\\n", day, peach);}return peach;}int main(){int n, m; \/\/ n m的值你可选择由程序运行时再输入 n = 10;m = 1;monkey_eat_peach(1, n, m);return 0;} ...

C语言 猴子吃桃问题
int x1=0;\/\/前一天的桃子数 int x2=0;\/\/剩下的桃子数 for(i=9;i>0;i--){ x1=2*x1+1;\/\/前一天的桃子数等于今天的桃子数的两倍加一个 x2+=x1;\/\/剩下的桃子数,第一天的桃子数就是总的桃子数 } printf("%d\\n",x2);

c语言:猴子吃桃问题,每天吃一半多一个,第13天还剩1个,求共有多少个桃子...
\/*第n天剩num个桃子*\/ } return num;}int main (void) { int num; puts ("每天剩余的桃子数:"); num = getPeachNumber (1); putchar ('\\n'); puts ("==="); putchar ('\\n'); printf("猴子第一天摘了%d个桃子!\\n", num);putchar ('\\n');getc...

猴子吃桃问题
1.程序分析:采取逆向思维的方法,从后往前推断。2.程序源代码:main(){ int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;\/*第一天的桃子数是第2天桃子数加1后的2倍*\/ x2=x1;day--;} printf("the total is %d\\n",x1);} 参考资料:http:\/\/zhidao.baidu.com\/question\/...

C语言 猴子吃桃问题
include"stdio.h"void main(){int a=10,b,c=1;while(--a){b=(c+1)*2; c=b;}printf("猴子的桃子共有:%d\\n",b);}

一个有关猴子吃桃子的编程题,用c语言循环语句怎么做??
1、首先在电脑中打开vc6.0,新建一个项目,添加头文件,如下图所示。2、接着添加main主函数,如下图所示。3、然后定义day、x1、x2,如下图所示。4、接着初始day、x2,然后使用while循环。5、最后使用printf打印,运行程序看看结果,猴子吃桃问题就完成了。

相似回答