用C语言解决猴子吃桃问题!!!
3个回答
展开全部
#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为符合条件的*/
}
<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为符合条件的*/
}
展开全部
#
include<stdio.h>
#
include<stdlib.h>
struct
monkey
{
int
number;
struct
monkey
*next;
};
struct
monkey
*p,*q,*head=NULL,*temp;
struct
monkey
*add(struct
monkey
*head,int
end)
{
int
i=1;
while(i<=end)
//END代表猴子总数
{
q=(struct
monkey
*)malloc(sizeof(struct
monkey));
q->number=i;//为每个猴子编一个号码
if(head==NULL)
{
head=p=q;
}
else
if(i==end)
{
p->next=q;
q->next=head;
}
p->next=q;
p=q;
i++;
}
return
head;
}
struct
monkey
*game(struct
monkey
*head,int
out,int
end)
{
p=head;
int
i=1;
while(p->next!=p)
{
for(i=1;i<out-1;i++)
{
p=p->next;
//
i+=out;//OUT代表猴子退出的数
}
/*if(p==head)
//如果是头结点HEAD指向下一个值
{
temp=head;
head=temp->next;
free(temp);//释放头结点
}*/
temp=p->next;
//删掉p->next
p->next=temp->next;
p=p->next;
free(temp);//删掉p->next后并释放他
}
printf("%d",p->number);
return
NULL;
}
void
main()
{
int
n,m;
printf("\n请输入猴子个数\n");
scanf("%d",&n);
printf("\n请输入退出去的数\n");
scanf("%d",&m);
head=add(head,n);
head=game(head,m,n);
}
include<stdio.h>
#
include<stdlib.h>
struct
monkey
{
int
number;
struct
monkey
*next;
};
struct
monkey
*p,*q,*head=NULL,*temp;
struct
monkey
*add(struct
monkey
*head,int
end)
{
int
i=1;
while(i<=end)
//END代表猴子总数
{
q=(struct
monkey
*)malloc(sizeof(struct
monkey));
q->number=i;//为每个猴子编一个号码
if(head==NULL)
{
head=p=q;
}
else
if(i==end)
{
p->next=q;
q->next=head;
}
p->next=q;
p=q;
i++;
}
return
head;
}
struct
monkey
*game(struct
monkey
*head,int
out,int
end)
{
p=head;
int
i=1;
while(p->next!=p)
{
for(i=1;i<out-1;i++)
{
p=p->next;
//
i+=out;//OUT代表猴子退出的数
}
/*if(p==head)
//如果是头结点HEAD指向下一个值
{
temp=head;
head=temp->next;
free(temp);//释放头结点
}*/
temp=p->next;
//删掉p->next
p->next=temp->next;
p=p->next;
free(temp);//删掉p->next后并释放他
}
printf("%d",p->number);
return
NULL;
}
void
main()
{
int
n,m;
printf("\n请输入猴子个数\n");
scanf("%d",&n);
printf("\n请输入退出去的数\n");
scanf("%d",&m);
head=add(head,n);
head=game(head,m,n);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1
4
10
22
46
94
190
382
766
1534
【程序21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第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);
}
4
10
22
46
94
190
382
766
1534
【程序21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询