猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個,第二天早上又將剩下的桃 猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮...
1、是一個思維問題,猴子吃桃子會不會把一個桃子分兩半來吃,你在程序中使用了實數(shù),而不是整數(shù),應(yīng)該判斷是不是能夠被2整除;
2、i使用實數(shù),也就是浮點數(shù),而輸出的時候使用的是%d的格式,所以,輸出為0,可以改變格式為%f,或者將i轉(zhuǎn)變成整數(shù)(printf("%d\n",(int)i);)
3、在外循環(huán)內(nèi)部,改變了循環(huán)控制變量的值,也就是i的值,第一個循環(huán)下來,i的值就成了0了,所以不可能再循環(huán),即使再循環(huán),結(jié)果也不是要判斷的i值,而是經(jīng)過多次運算后的結(jié)果:1,你可以引入另外一個變量來做內(nèi)循環(huán)和進(jìn)行判斷。
void main()
{
int j,k;
int i;
for(i=10000;i>1;i--)
{
k=i;
for(j=1;j<=10;j++)
{
if(k!=(k/2)*2) break;
k=k/2-1;
// printf("%d\n",k);
}
if(k==1) break;
}
printf("%d\n",i);
/* int i,j;
j=1;
for(i=0;i<10;i++)
j=(j+1)*2;
printf("%d\n",j);*/
}
1 4 10 22 46 94 190 382 766 1534
【程序21】
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個
第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下
的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思維的方法,從后往前推斷。
2.程序源代碼:
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第一天的桃子數(shù)是第2天桃子數(shù)加1后的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
推呀:第九天吃完只剩一個了,那么就是(1+1)X2=4個
第八天:10個
第七天:22個
第六天:46個
第五天:94個
第四天:190個
第三天:382個
第二天:766個
第一天總共有:(766+1)X2=1534個
所以共摘了1534個桃子!!
int tian=9;//實際吃的天數(shù)
int yi=1;//最后所剩的桃子
while(tian>0)
{
yi=(yi+1)*2;//每天吃一半加一個,反過來就是加一乘2,所得賦值給yi,yi=4,就刷新了yi變量,等天數(shù)減到?jīng)]得減,經(jīng)過9次就是yi=1534,然后輸出。
tian--;
}
printf("%d",yi);
天數(shù)n與剩下的桃子f之間的關(guān)系是:f(n)=f(n-1)/2-1
倒推的話是:f(10)=1; f(n-1)=(f(n)+1)*2
#include <stdio.h>
void main()
{
int i;
int p[10];
p[10]=1;
for(i=9;i>0;i--)
{
p[i]=(p[i+1]+1)*2;
printf("day: %d; peaches: %d\n",i,p[i]);
}
}
C語言猴子吃桃遞歸法
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下 的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。1.程序分析:采取逆向思維的方法,從后往前推斷。2.程序源...
php猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個...
<?php\/** * 遞推法求解 **\/function main($n, $i) {if ($i > 1) {$n = 2 * $n + 2;return main($n, $i - 1);}return $n;}echo main(1, 10);?>
小明有一筐蘋果第一天吃了一半第二天吃了全部的2\/7還剩九個一共有多 ...
你說的這道題和“猴子吃桃”問題類似。下面是我用遞歸實現(xiàn)的猴子吃桃問題的程序,你可以參考一下。。。對應(yīng)你的題目,你只要改一下類名和變量名即可。希望對你有所幫助。\/ 猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個;第二天早上又將剩下的桃子吃掉一半,又...
C語言習(xí)題 猴子吃桃問題 猴子第一天摘下若干桃子,吃了一半,不過癮,又...
第一天吃了一半加一個啊,你不是說的很清楚么。嘿嘿。這個題很簡單啊,做十次循環(huán),倒著來,本來一個n=1,一天前是n=n*2+n,兩天前是n=n*2+n。。。一直到第十天前。然后再算出吃了多少。
C++程序題,編猴子吃桃問題 猴子第一天摘一干個桃子,當(dāng)即吃了一半...
printf("最初摘的桃子數(shù)量為%d個\\n",all);} int total(int n){ int m;if(n == 1)\/\/逆推,把第10天作為起始第一天,反推10天回去 { m = 1;} else { m = 2 * (total(n-1)+1);\/\/根據(jù)第二天個數(shù)=前一天個數(shù)÷2-1公式得出遞歸方法 } return m;} VC6.0下已調(diào)試運行,沒有...
小猴子摘了48個桃子,吃了一半又,又吃了剩下的桃子的一半,請問還剩下多 ...
12顆,共48個吃了一半就還有24個,又吃了24個的一半就是12個
猴子吃桃問題c語言
\/*猴子第一天摘下N個桃子,當(dāng)時就吃了一半,還不過癮,就又多吃了一個。*\/\/*第二天又將剩下的桃子吃掉一半,又多吃了一個。*\/\/*以后每天都吃前一天剩下的一半零一個。*\/\/*到第10天在想吃的時候就剩一個桃子了*\/\/*問第一天共摘下來多少個桃子?*\/#include <stdio.h>#include <stdlib....
C語言猴子吃桃
include <stdio.h> int main(void){ int i, peach;peach=1;scanf("%d",&i);while(i>1){ i--;peach=(peach+1)*2;} printf("%d\\n", peach);} 程序如上,你可以輸入第i天發(fā)現(xiàn)桃子數(shù)為1.例如:你輸入 10 結(jié)果是 1534 你說的 1023 肯定是不對的,因為它都是一半后多吃1個,應(yīng)該...
求C語言題目
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下 的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。1.程序分析:采取逆向思維的方法,從后往前推斷。2.程序源...
java的經(jīng)典例題
【程序14】 題目:輸入某年某月某日,判斷這一天是這一年的第幾天?【程序15】 題目:輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出。【程序16】 題目:輸出9*9口訣。【程序17】 題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的...
相關(guān)評說:
定襄縣調(diào)速: ______[答案] 因為第十天沒吃…… 這個流程中判斷i當(dāng)?shù)诰糯窝h(huán)結(jié)束,i=10時退出循環(huán) “因為第十天沒吃所以i=1其實是對應(yīng)第九天的?” 沒錯,在算完該天后,i=i+1.進(jìn)入下一天.若回到了第0天(i=10,此時已經(jīng)算完第一天的了)則立即結(jié)束循環(huán)
定襄縣調(diào)速: ______[答案] x=1 FOR n= 10 TO 2 STEP -1 x=(x+1)*2 NEXT n PRINT "第一天共摘了" & x & “個桃子” END 結(jié)果=1534
定襄縣調(diào)速: ______ void main() {int d,p=1; for(d=1;d 全部
定襄縣調(diào)速: ______[答案] 這個問題簡單的解是: #include intmain() { inti,x=1; for(i=9;i>0;i--) x=(x+1)*2; printf("第一天共摘了%d只桃子\n",x); return1; } 運行結(jié)果: 第一天共摘了1534只桃子 這是用循環(huán)做的,其實這是一個典型的數(shù)列問題 可以得出公式的. 我給你解一下...
定襄縣調(diào)速: ______ main() { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2;/*第一天的桃子數(shù)是第2天桃子數(shù)加1后的2倍*/ x2=x1; day--; } printf("the total is %d\n",x1); system("pause"); }
定襄縣調(diào)速: ______ 3070個 # include<stdio.h># include<stdlib.h> void main() { int j,k; int i; for(i=10000;i>1;i--) { k=i; for(j=1;j<=10;j++) { if(k!=(k/2)*2) break; k=k/2-1; } if(k==1) break; } printf("%d\n",i); getch(); }
定襄縣調(diào)速: ______ public static void main(String[] args) { int lastday =1; int days = 10;//第十天 for(int i = 1;i<=days;i++){...
定襄縣調(diào)速: ______[選項] A. 31 B. 32 C. 2 D. 33
定襄縣調(diào)速: ______ 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;/*第一天的桃子數(shù)是第2天桃子數(shù)加1后的2倍*/ x2=x1; day--; } printf("the total is %d\n",x1); }
定襄縣調(diào)速: ______[答案] 程序框圖如下圖所示: 程序代碼如下所示: I=9 S=1 WHILE I>0 S=(S+1)*2 I=I-1 WEND PRINT X END 當(dāng)I=9時,不滿足退出... S=766,I=1, 當(dāng)I=1時,不滿足退出循環(huán)的條件,S=1534,I=0, 當(dāng)I=9時,滿足退出循環(huán)的條件, 故第一天有桃1534顆.