這裡蒐索程式師資訊,查找有用的技術資料
當前位置:首頁 » 編程語言 » 猴子吃桃c語言程序while
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

猴子吃桃c語言程序while

發布時間: 2022-04-26 08:51:26

1. c語言,猴子吃桃子代碼求注釋

哥們好,我來解釋解釋哈
這個程序是倒著分析的:首先說的是s[n]為第n只猴子走後,留給其他每個猴子的桃子的數目。(當然猴子都不知道前面的猴子已經拿過了),所以剩餘桃子是s[5]*4,就是第五隻猴子給其他每隻猴子留下的桃子數目乘以4。
倒著推,第五隻猴子先多吃了一個,再平分5份,並吃掉了自己的一部分,那麼留下的s[5]其實肯定是4的倍數【這段代碼其實可以優化一下】則留下的s[5]*5並加上1,就是第4個猴子留下的桃子總數,然後看下是否是4的倍數,因為這是第四個猴子留下的准備給其他4個猴子的桃子,肯定是4的倍數啦,如果不是就說明錯誤咯,,然後這個數再除以4,再乘以5,再加上1,就是第三隻猴子留下的桃子總數,那肯定也是4的倍數啦。
以此類推,就能推到第一隻猴子時的桃子數什麼的,總數什麼的,都出來啦
如果上面意思弄懂了,現在就說程序本身,先假設s[5]為1,然後看s[5]*5+1【就是第四隻猴子留下的桃子數目】是否能被4整除,如果不能,就直接跳出循環,假設s[5]為2,再看s[5]*5+1能否被4整除,如果能被整除,就得到s[4]的值,【就是你 「s[4]
/=
4;
//想知道這代碼有什麼用」的這段代碼的意思】再乘以5,然後再加上1,就是第三隻猴子留下的桃子數目,再看這個能否被4整除,如果不能,就直接跳出循環,再重新來啦
一直到s[1],最後s[0]就是所謂的總數目啦,
懂了吧,朋友?還沒懂的話
就再繼續探討探討哈
歡迎

2. 請用C語言編寫一個程序,「猴子吃桃」問題

如果真是吃到了第10天,我想說這TMD還是猴子嗎?第一天就會撐死!

C代碼在線運行工具

#include<stdio.h>

intmain()
{
intday=10;
intsum=0;
inti=0;

sum=1;
for(i=day;i>=1;i--)//吃之後演算法
{
sum=(sum+1)*2;
}
printf("第%d天吃之後還剩1個,最初有%d個桃子,",day,sum);
printf("第1天吃了%d個桃子; ",sum/2+1);

sum=1;
for(i=day-1;i>=1;i--)//吃之前演算法
{
sum=(sum+1)*2;
}
printf("第%d天吃之前還剩1個,最初有%d個桃子,",day,sum);
printf("第1天吃了%d個桃子。 ",sum/2+1);

return0;
}

第 10 天吃之後還剩1個,最初有 3070 個桃子,第 1 天吃了 1536 個桃子;

第 10 天吃之前還剩1個,最初有 1534 個桃子,第 1 天吃了 768 個桃子。

3. C語言編程猴子吃桃子問題

猴子只吃了99次。第100次還沒吃呢。

只是這求到100天之前,這數字也是太大了吧?

int早就溢出了。

用double只能保證前面的大數正確,後面的尾數就全變為0了(否則要使用高精度計算,編程代碼就復雜多了):

#include<stdio.h>
intmain()
{intday=99;
doublex1,x2=1;
while(day)
{x1=(x2+1)*2;x2=x1;day--;}
printf("%.0lf ",x1);
return0;
}

4. 猴子吃桃。C語言編程。

#include<stdio.h>
intmain()
{
intt=1;
intd=10;
for(d=10;d>1;d--)
t=(t+2)*3;
printf("%d ",t);
return0;
}

5. 如何用c語言while循環實現下面描述里猴子吃桃問題。

#include<stdio.h>
int
main()
{
int
day=9,n1,n2=1;
while(day>=1){
n1=(n2+1)*2;
n2=n1;
day--;
}
printf("第一天的桃子總數為:%d\n",n1);
return
0;
}

6. 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天發現桃子數為1.
例如:你輸入
10
結果是
1534
你說的
1023
肯定是不對的,因為它都是一半後多吃1個,應該是偶數。
上面的程序,正是你題目的逆向死維,沒有用遞歸。

7. 簡單C語言循環語句編程題目! 猴子摘了一堆桃子。第一天吃了一半,覺的不過癮,又多吃了一個,第二天吃了

#include<stdio.h>
voidmain()
{
intday,x1,x2;
day=5;
x2=1;
while(day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
printf("total=%d ",x1);
}

8. 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天發現桃子數為1.
例如:你輸入
10
結果是
1534
你說的
1023
肯定是不對的,因為它都是一半後多吃1個,應該是偶數。
上面的程序,正是你題目的逆向死維,沒有用遞歸。

9. 一個有關猴子吃桃子的編程題,用c語言循環語句怎麼做

1、首先在電腦中打開vc6.0,新建一個項目,添加頭文件,如下圖所示。

10. C語言 猴子吃桃

你好!!!
其實這是個遞歸問題!!!
思路分析如下:
某一天吃的是前一天的一半還多一個,假設今天剩下為x1,昨天共有x2個桃子,它們的關系是:x1=x2/2-1,即x2=(x1+1)*2,那麼既然已經知道今天剩下的桃子,那麼就可以知道,昨天的,要是知道昨天的,那麼前天的就知道了,要是知道前天的,那麼大前天的也就知道了、、、、、、到最後一定知道第一天的陶子總數。

現在我們來分析你的代碼:

從代碼可以知道,第九天只剩下一個桃子了,也就的循環九次,故代碼為:
while(day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
不懂的我們在交流!!!