c语言猴子偷桃
⑴ 用c语言怎么做猴子偷桃
#include <stdio.h>
#include <stdlib.h>
int gouzitigui(int n){
printf("xxxxxxxxxxxxx\n");
if(n==1){
return 1;
}else{
return (gouzitigui(n-1)+1)*2;
}
}
int main()
{
int i,n=1;
printf("猴子最初有%d个桃子",gouzitigui(10));
return 0;
}
从题目中可以得出后一天是前一天加1乘以2,
⑵ 用链表(C语言)解决解决猴子偷桃问题
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
j=1;
for(i=1;i<10;i++)
{
j=2*(j+1);
}
printf("第一天摘桃子的个数为%d\n",j);
return 0;
}
⑶ 猴子摘桃!C语言,老是输出自己的值,新人求教
#include<stdio.h>
intq(inta)
{
inti;
intb=1;
intc;
for(i=1;i<=a-1;i++)
{
c=2*(b+1);
b=c;
}
returnc;
}
intmain(void)
{inta;
while(~scanf("%d",&a))
{if(a!=1)
{
printf("%d ",q(a));}
elseprintf("1 ");
}
⑷ c语言程序猴子偷桃问题
#include<stdio.h>
int main()
{
int i,n=1;
for(i=9;i>0;i--)
n=(n+1)*2;
printf("the number of all peach is %d ",n);
return 0;
}
⑸ 猴子摘桃问题我写的c语言程序哪里出错了。
#include <stdio.h>
int ok(long n)
{
int i,count;
count=0;
for(i=0;i<5;i++)
{
if(n%5!=1)
break;
else
{
n=(n-1)/5*4;
count++;}
}
return count;
}
void main()
{
int ok(long n);
int k,l,a[1000];
long n;
l=0;
for(n=6;n<100000;n++)
{
if(ok(n)==5)
{
//printf("%d\n",n);
a[l]=n;
l++;
}
}
printf("一共有%d种方案\n",l);
for(k=0;k<l;k++)
{
printf("若猴子拿到和吃掉的桃总数为:");
printf("%d\n",a[k]);
printf("则每只猴子拿到和吃掉的桃数\n");
printf("第一只猴子拿到和吃掉的桃数:");
printf("%d\n",a[k]=(a[k]-1)/5+1);
printf("第二只猴子拿到和吃掉的桃数:");
printf("%d\n",a[k]=(4*a[k]-1)/5+1);
printf("第三只猴子拿到和吃掉的桃数:");
printf("%d\n",a[k]=(4*a[k]-1)/5+1);
printf("第四只猴子拿到和吃掉的桃数:");
printf("%d\n",a[k]=(4*a[k]-1)/5+1);
printf("第五只猴子拿到和吃掉的桃数:");
printf("%d\n",a[k]=(4*a[k]-1)/5+1);
printf("*********************************************************\n");
}
}
//你的程序没控制好变量
⑹ 用递归解决猴子偷桃问题
使用数组的方法为:
#include "stdafx.h"
int main(int argc, char* argv[])
{
int a[10],i,j;
a[0]=1;
for(i=1;i<10;i++)
{
a[i]=(a[i-1]+1)*2;
}
printf("一共有桃子的个数为:%d",a[9]);
return 0;
}
用递归的方法为:
#include "stdafx.h"
int fun(int y)
{
int m;
if(y==1) return
m=1;
else
m=(fun(y-1)+1)*2;
return m;
}
int main(int argc, char* argv[])
{
int a=10;
b=fun(a);
printf("一共有桃子的个数为:%d",b);
return 0;
}
本人不会用链表进行编写!
⑺ C语言作业:用递归法怎么做猴子摘桃知道的大哥大姐帮帮忙!
猴子摘桃问题
猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?
#include<stdio.h>
intgetPeachNumber(n){
intnum;/*定义所剩桃子数*/
if(n==10)
return1;/*递归结束条件*/
else{
num=getPeachNumber(n+1)*2+2;/*递归*/
printf("第%d天所剩桃子%d个 ",n,num);/*天数,所剩桃子个数*/
}
returnnum;
}
intmain(void){
intnum=getPeachNumber(1);
printf("猴子第一天摘了%d个桃子。 ",num);
getch();/*屏幕暂留*/
return0;
}
运行结果
⑻ c语言:猴子分桃
呵呵,最近怎么一直看到猴子分桃。答案是620~
#include <iostream>
using namespace std;
float superMonkey(int n,int n2)
/**参数说明:n是几只猴子。n2是最后最迟醒来的猴子拥有的桃数,比如在你的题目最迟醒来的猴子最少最少都要有6个桃子,才能分成五份,再吃掉剩下的一个。**/
{
if (n==1) return n2;
float x;
x = (5 * (superMonkey(n-1,n2)+1))/4;
return x;
}
int main(int argc, char *argv[])
{
for(int i=6; i<=300;i++)
{
cout<<superMonkey(5,i)<<"\n";//5只猴子,为了找出原先最少必须有几个,用循环求答案直到找到一个整数。
}
cin.get();
}
/**接下来出现的一堆数字就是一开始的桃数。不能有小数点的,所以要找的是第一个出现的整数。我放300次循环因为我稍微试过了,620是原先必须有的最少桃数(第一个出现的整数就是620啊)。你可以稍微改改,放个检测整数的函数,就不用看到一堆数字了。还可以该题目成10只猴子什么的。**/
⑼ C语言猴子吃桃问题递归法
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
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);
}
==============================================================
⑽ C语言转化方程。 猴子摘桃
这道题我的c语言书上有。给你看一下:
假设第一天有a1个桃,第二天有a2个,……,第九天有a9个,第10天有a10个。在这里面只有a10=1是知道的,我们要计算a1,而我们可以看出,a1~a10存在着简单的联系:
a9=2(a10 1)
a8=2(a9 1)
a7=2(a8 1)
…
a1=2(a2 1)
由此我们可以看出这是一个递推关系。