大神帮忙解决C语言猴子吃桃的问题
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File
2、题目:猴子吃桃:猴子第1天摘下若干个桃子,当即吃掉一半多1个桃子,第2天早上又将剩下的桃子吃掉一半多1个,以后每天都吃掉前天一半多1个,到第10天早上只剩下一个桃子,求第1天猴子到底摘子多少个桃子?
3、输入预处理命令和主函数:
#include /*输入输出头文件*/
void main() /*空类型:主函数*/
4、定义变量、确定天数和每天桃子的数量:
int a,b=1; /*定义变量的数据类型为整型*/
for(a=1;a<=9;a++) /*确定天数*/
b=(b+1)*2; /*计算从第10天到第1天每天桃子的数量*/
5、输出第1天桃子的数量:
printf("第一天摘了%d个桃子
",b); /*输出第1天桃子的数量*/
6、完整的源代码:
/* 猴子吃桃
猴子第1天摘下若干个桃子,当即吃掉一半多1个桃子,第2天早上又将剩下的桃子吃掉一半多1个,以后每天都吃掉前天一半多1个,到第10天早上只剩下一个桃子,求第1天猴子到底摘子多少个桃子?*/
#include /*输入输出头文件*/
void main() /*空类型:主函数*/
{
int a,b=1; /*定义变量的数据类型为整型*/
for(a=1;a<=9;a++) /*确定天数*/
b=(b+1)*2; /*计算从第10天到第1天每天桃子的数量*/
printf("第一天摘了%d个桃子
",b); /*输出第1天桃子的数量*/
}
这两个代码得到的结果是相同的,说明都是正确的
1、关于使用while,这两个是通用的,哪个用着舒服就用那一个,不必拘泥
2、估计是想让你看清楚他的迭代过程,如果是在一个变量上计算,有些人可能看不出来,这样表达更清晰。
#include<stdio.h>
int monkey_eat_peach(int day,int n,int m){ // 猴子吃桃递归算法
int peach;
if (day==n)
{
peach = 1;
printf("第%d天,有%d个桃子
", day, peach);
return peach;
}else{
peach = (monkey_eat_peach(day + 1, n, m) + 1) * 2;
printf("第%d天,有%d个桃子
", day, peach);
}
return peach;
}
int main(){
int n, m; // n m的值你可选择由程序运行时再输入
n = 10;
m = 1;
monkey_eat_peach(1, n, m);
return 0;
}
#include<stdio.h>
int N,m; //吃到N天还没吃时,剩1个,全局变量
int funn(int n)
{
if(n==N)
return 1;
else
return 2*funn(++n)+2*m;
}
int main()
{
int days,y;
printf("输入N和m\n");
scanf("%d %d",&N,&m);
for(days=1;days<=N;days++)
{
y=funn(days);
printf("days%d\t%d\n",days,y);
if(y<0)
{
printf("有误");
break;
}
}
}
设昨天桃子数y,今天的桃子数t,(y,t均为该天未吃前的数量,即前一天吃过后留下的)
昨天吃掉(1.0/2)*y+m,剩余t=y-((1.0/2)*y+m)=(1.0/2)*y-m
关系式为y=2*t+2*m(y表示昨天,t表示今天)
大神帮忙解决C语言猴子吃桃的问题
include<stdio.h>int monkey_eat_peach(int day,int n,int m){ \/\/ 猴子吃桃递归算法int peach;if (day==n){peach = 1;printf("第%d天,有%d个桃子\\n", day, peach);return peach;}else{peach = (monkey_eat_peach(day + 1, n, m) + 1) * 2;printf("第%d天,有%d个桃子\\n...
关于C语言的问题,猴子吃桃!
printf("第一天共摘了%d只桃子\\n",x);return 1;} 运行结果:第一天共摘了1534只桃子 这是用循环做的,其实这是一个典型的数列问题 可以得出公式的.我给你解一下:设第n天的桃子数为p[n],这也是第n-1天吃剩下的.(在百度回答没有下标,只好用借C语言的数组)则有:p[10]=1 p[i]=(p[i...
c语言:猴子吃桃子问题,
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File 2、题目:猴子吃桃:猴子第1天摘下若干个桃子,当即吃掉一半多1个桃子,第2天早上又将剩下的桃子吃掉一半多1个,以后每天都吃掉前天一半多1个,到第10天早上只剩下一个桃子,求第1天猴子到底摘子多少个桃子?3、输入预处理命令和主函数...
c语言猴子吃桃问题
一个猴子摘了一些桃子,它每天吃了其中的一半然后再多吃了一个,直到第10天,它发现只有1个桃子了,问它第一天摘了多少个桃子?猴子分N天吃完了桃子,要想求出第1天的桃子数,就先要求出第2天的桃子数,...因此,有:a1=(a2+1)*2;a2=(a3+1)*2;a3=(a4+1)*2;...a9=(a10+1)*2;a10=1;...
C语言问题 猴子吃桃问题
main(){ int i,n;n=1;for(i=1;i<=9;i++)n=(n+1)*2;printf("%d",n);} 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语言猴子吃桃问题递归法
n, num); \/*第n天剩num个桃子*\/ } return num;}int main (void) { int num; puts ("每天剩余的桃子数:"); num = getPeachNumber (1); putchar ('\\n'); puts ("==="); putchar ('\\n'); printf("猴子第一天摘了%d个桃子!\\n", num)...
C语言函数处理猴子吃桃子问题
main(){ int day,x1,x2;day=9;x2=1;while(day>0){ x1=(x2+1)*2;x2=x1;day--;} printf("the total is %d\\n",x1);getch();}
c语言猴子吃桃穷举法解决问题
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。\/\/以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。main(){ int i,j,n;for (i=1;i==1...
c语言 for循环的问题(猴子吃)桃
去掉',sum',得到的结果是不确定的。printf的参数个数是不定的。你把sum去掉了,编译器无法检查出这个错误。但又要输出一个整数。就把内存中某一个值给输出了。
C语言 猴子吃桃问题
int x1=0;\/\/前一天的桃子数 int x2=0;\/\/剩下的桃子数 for(i=9;i>0;i--){ x1=2*x1+1;\/\/前一天的桃子数等于今天的桃子数的两倍加一个 x2+=x1;\/\/剩下的桃子数,第一天的桃子数就是总的桃子数 } printf("%d\\n",x2);