1. 猴子吃桃问题c语言
/*猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。*/
/*第二天又将剩下的桃子吃掉一半,又多吃了一个。*/
/*以后每天都吃前一天剩下的一半零一个。*/
/*到第10天在想吃的时候就剩一个桃子了*/
/*问第一天共摘下来多少个桃子?*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
/*第n天所剩桃子数*/
intgetPeachNumber(intn){
intnum;/*定义所剩桃子数*/
inti=0;
if(n==10)
return1;/*递归结束*/
else{
num=getPeachNumber(n+1)*2+2;/*递归*/
printf("第%d天:%d个桃子 ",n,num);/*第n天剩num个桃子*/
}
returnnum;
}
intmain(void){
intnum;
puts("每天剩余的桃子数:");
num=getPeachNumber(1);
putchar(' ');
puts("================================================================");
putchar(' ');
printf("猴子第一天摘了%d个桃子! ",num);
putchar(' ');
getch();/*屏幕暂留*/
return0;
}
运行结果
2. 用C语言解决猴子吃桃问题!!!
#include
<iostream.h>
void
main()
{
int
day,n1,n2;
day=9;
n2=1;
//n2表示剩下的桃子
while(day>0)
{
n1=(n2+1)*2;
n2=n1;
day--;
}
printf(“%d\n”,n2);
}
第二种方法
#include
<stdio.h>
void
main()
{
int
day,sum=1;
for(day=1;day<=9;day++)
//剩一个桃子是从第九天剩下的,所以要算九次
sum=(sum+1)*2;
printf("%d\n",sum);
}
第三种:
#include<stdio.h>
main()
{
int
day=9,n=1;
while(day-->0)
n=(++n)*2;
/*第1天的桃子数是第2天桃子数加1后的2倍*/
printf("%d",n);
}
第四中方法:
#include
"stdio.h"
main()
{
int
day,m,n;
for(n=2;;n++)
{
m=n;
for(day=1;day<10;day++)
m=m/2-1;
/*m为吃剩下的桃*/
if(m==1)
/*第十天,剩下一个*/
break;
}
printf("第一天摘下的桃子数:%d\n",n);
/*n为符合条件的*/
}
3. c语言猴子吃桃子问题怎么做
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File
4. C语言中的猴子吃桃子问题
#include<math.h>
#include<stdio.h>
intf(inta,intb)
{
intx=b,i;
for(i=a;i>=1;i--)
{
x=(x+1)*2;
}
returnx;
}
intmain()
{
inta,b=1;//b是最后一天剩的桃子树,为1;
intmax;
printf("请输入天数: ");
scanf("%d",&a);
while(a!=0)
{
max=f(a,b);
printf("猴子第一天摘的桃子数为:%d ",max);
scanf("%d",&a);
}
return0;
}
5. C语言猴子吃桃问题流程图
一个猴子摘了一些桃子,它每天吃了其中的一半然后再多吃了一个,
直到第10天,它发现只有1个桃子了,问它第一天摘了多少个桃子?
猴子分N天吃完了桃子,要想求出第1天的桃子数,就先要求出第2天的桃子数,.......因此,有:
a1=(a2+1)*2;
a2=(a3+1)*2;
a3=(a4+1)*2;
......
a9=(a10+1)*2;
a10=1;
现在就知道了算法,我们可以用递归来求解:
int qiu(int a,int n)
{
if(n==1) a=1; //第10天就只剩1个了
else a=(a(n-1)+1)*2; //前一天总比后1天多一半加1
}
-------------------------------------
#include<stdio.h>
int qiu(int a,int n);
main(){
int zuih=1,tians=10;//最后一天的个数,天数
long sum;
sum=qiu(1,10);
printf("di yi tian you %ld ge.\n"):
}
int qiu(int a,int n)
{
if(n==1) a=1; //第10天就只剩1个了
else a=(a(n-1)+1)*2; //前一天总比后1天多一半加1
}
6. 第六题猴子吃桃,要完程序,初学C语言
猴子吃桃的C语言递归程序如下:
#include<stdio.h>
intf(intn);
intmain()
{
printf("%d",f(1));
return0;
}
intf(intn)
{
if(n==10)return1;
return(f(n+1)+1)*2;
}
运行结果:
1534
7. C语言 猴子吃桃问题
#include"stdio.h"
voidmain()
{
inta=10,b,c=1;
while(--a)
{
b=(c+1)*2;
c=b;
}
printf("猴子的桃子共有:%d ",b);
}
8. 请用C语言编写一个程序,“猴子吃桃”问题
我实在想不通为什么他们能写这么多
int
n
=
1;//n为桃子数量
for
(int
i
=
0;
i
<
9;
i++)
{//9次循环
因为第十天
他没得吃
n
=
(n
+
1)
*
2;
}
printf("%d",
n);
结果为1534
这个数据就是正确答案
9. C语言编程猴子吃桃子问题
猴子只吃了99次。第100次还没吃呢。
只是这求到100天之前,这数字也是太大了吧?
int早就溢出了。
用double只能保证前面的大数正确,后面的尾数就全变为0了(否则要使用高精度计算,编程代码就复杂多了):
#include<stdio.h>
intmain()
{intday=99;
doublex1,x2=1;
while(day)
{x1=(x2+1)*2;x2=x1;day--;}
printf("%.0lf ",x1);
return0;
}
10. C语言递推流程图,有一堆不知数量的桃子,猴子第一天吃掉一半,觉得不过瘾,又多吃了一个;
欲解答这个题,首先理顺思路。解答这个题,可以用倒推法,亦可用正推法,把数学问题解决了,在编程就不难了。
这个题,用倒推法比较简单;推理如下:
"到第10天早上,猴子发现只剩一个桃子了",说明第九天只有4个桃子(吃掉一半加1,也就是吃掉3个,到第十天就只剩下1个了嘛),所以第八天只有桃子(4+1)乘以2,也就是10个桃子(吃掉一半加1,也就是6个就只剩下4个)…… ……找到规律就可以计算了。
规律:吃掉了一半多一个,那么剩下的就是比一半少一个了。
1.第九天有桃子(1+1)×2=4 个
2.第八天:(4+1)×2=10
3.第七天:(10+1)×2=22
4.第六天:(22+1)×2=46
5.第五天:(46+1)×2=94
6.第四天:(94+1)×2=190
7.第三天:(190+1)×2=382
8.第二天:(382+1)×2=766
9.第一天:(766+1)×2=1534
附程序:
#include<stdio.h>
void main()
{
int i,sum=1;
for (i=1;i<=9;i++)
sum=(sum+1)*2;
printf("桃子总数为:%d\n",sum);
}