问一道C语言编程的问题,看下图

问一道C语言编程的问题,看下图下图是题目和答案

现在把题目修改成:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了两个。第2天早上又将剩下的桃子吃掉一半,又多吃了两个。以后每天早上都吃了前一天剩下的一半零一个。到第6天早上想再吃时,见只剩了一个桃子了。求第一天共摘了多少桃子。

答案是100个 但是怎么编程?请大神解答

按你的提问,每天都吃一半多两个,第6天剩一个。程序按图片中的程序照猫画虎即可。计算结果,第一天摘了156个桃子,而不是100个。

#include <stdio.h>
int main()
{
int day,x1,x2;
day=5;
x2=1;
while(day>0)
{x1=(x2+2)*2;
x2=x1;
day--;
}
printf("total=%d\n",x1);
return 0;
}

用数学方法按天推算了一下,是156个,无误。

追问

你好,从第三天起是吃了前一天的一半零一个

可以帮我再编一下吗,谢谢你

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-27
#include "stdio.h"
int main(int argc,char *argv[]){
printf("The monkey picked %d peaches on the first day.\n",(((((1+1)*2+1)*2+1)*2+2)*2+2)*2);
return 0;
}

运行结果:

若想多写点代码,那就如下写——

int main(int argc,char *argv[]){
int s,i,t;
for(s=t=1,i=0;i<5;i++){
(s+=t)+=s;
if(i==2)
t=2;
}
printf("The monkey picked %d peaches on the first day.\n",s);
return 0;
}

第2个回答  2019-01-18

#include<stdio.h>
int main()
{ int x=1,n;
  for(n=9; n>0; n--)
    x=(x+1)*2;
  printf("%d\n",x);
  return 0;
}

第3个回答  2019-01-27
逆运算:第六天的时候剩一个,那么可以得到,第五天就是(1+1)*2=4;第四天就是:(4+1)*2=10个,第3天 (10+1)*2=22;第二天;(22+2)*2=48;第一天,(48+2)*2=100个;
int x=1,i;
for(i=1;i<=6;i++)//如果是10天剩一个的话,就把6改成10;
{
if(i<=2){计算1,2天的,
x=(x+2)*2;
}
else if(i>2){//计算后面四天的
x=(x+1)*2;
}
}
printf("第一天一共栽了%d个",x);
第4个回答  2018-11-01
#include <cstdio>

int all(int n,int left){
if(n==2) return 2*(left+2);
if(n==3) return all(n-1,2*(left+2));
return all(n-1,2*(left+1));
}//参数表示第n天还剩left个桃子

int main(){
printf("%d",all(6,1));
}

相似回答