一个有关猴子吃桃子的编程题,用c语言循环语句怎么做??
有一只猴子,第一天摘了若干个桃子,当即吃了一半,但还觉得不过瘾,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天...
有一只猴子,第一天摘了若干个桃子 ,当即吃了一半,但还觉得不过瘾 ,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一半加5个)。到第n天早上再想吃的时候,就只剩下一个桃子了。 输入: 天数n 输出: 第一天的桃子个数
展开
5个回答
推荐于2018-02-28
展开全部
分析:
① 从最后一天的x=1个,倒推出前一天的个数x,表达式可写为x=2(x+1)
② 将该表达式作为循环n次的循环体,并在该语句处设置断点,进行观察即可。
最简单的源程序如下:
#include<stdio.h>
void main()
{
int i,x;int day,int n;
printf("请输入天数:\n");
scanf("%d",&n);
for(i=0;;i+=2)
{
x=i;
for(day=1;day<=n;day++)
x=x/2-1;
if(x==1)
{
printf("第一天的桃子个数为%d\n",i);
break;
}
}
getch();
}
① 从最后一天的x=1个,倒推出前一天的个数x,表达式可写为x=2(x+1)
② 将该表达式作为循环n次的循环体,并在该语句处设置断点,进行观察即可。
最简单的源程序如下:
#include<stdio.h>
void main()
{
int i,x;int day,int n;
printf("请输入天数:\n");
scanf("%d",&n);
for(i=0;;i+=2)
{
x=i;
for(day=1;day<=n;day++)
x=x/2-1;
if(x==1)
{
printf("第一天的桃子个数为%d\n",i);
break;
}
}
getch();
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
递推法:
#include <stdio.h>
void main()
{
int day,n;
for(day=10,n=1;day>0;day--){
printf("第%d天有%d个\n",day,n);
n=2*n+2;
}
}
递归法:
#include <stdio.h>
int monkey(int day){
int n;
if(day==10) return 1;
else
return n=2*monkey(day+1)+2;
}
void main()
{
int day;
printf("%d",monkey(1));
}
#include <stdio.h>
void main()
{
int day,n;
for(day=10,n=1;day>0;day--){
printf("第%d天有%d个\n",day,n);
n=2*n+2;
}
}
递归法:
#include <stdio.h>
int monkey(int day){
int n;
if(day==10) return 1;
else
return n=2*monkey(day+1)+2;
}
void main()
{
int day;
printf("%d",monkey(1));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-05-12
展开全部
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;
int num = 1;
printf("input n:\n");
scanf("%d",&n);
n = n-1;
//n-1 (n-1 + 1)*2
//n-2
while(n>=1)
{
num = (num+n)*2;
n--;
}
printf("first day:%d\n",num);
system("pause");
}
#include<stdlib.h>
int main()
{
int n;
int num = 1;
printf("input n:\n");
scanf("%d",&n);
n = n-1;
//n-1 (n-1 + 1)*2
//n-2
while(n>=1)
{
num = (num+n)*2;
n--;
}
printf("first day:%d\n",num);
system("pause");
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<stdlib.h>
int main()
{int n;
int num = 1;
printf("input n:\n");
scanf("%d",&n);
n = n-1;
//n-1 (n-1 + 1)*2
//n-2
while(n>=1)
{ num = (num+n)*2;
n--; }
printf("first day:%d\n",num);
system("pause"); }
#include<stdlib.h>
int main()
{int n;
int num = 1;
printf("input n:\n");
scanf("%d",&n);
n = n-1;
//n-1 (n-1 + 1)*2
//n-2
while(n>=1)
{ num = (num+n)*2;
n--; }
printf("first day:%d\n",num);
system("pause"); }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询