1. 程式人生 > >編程實現喝汽水問題

編程實現喝汽水問題

stdio.h assert -s image windows es2017 mage alt ont

喝汽水,1瓶汽水1元,2個空瓶可以換一瓶汽水,給20元,可以多少汽水。編程實現。

我是這麽理解的 :首先你有20元錢,

保底能喝20瓶汽水,這時候你手裏就有20個空瓶子。

20個空瓶子又能換10瓶汽水,此時你手裏就有10個空瓶子。

10個空瓶子又能換5瓶汽水,此時你手裏就有5個空瓶子。

5個空瓶子又能換2瓶汽水,此時你手裏就有2+1=3個空瓶子。

3個空瓶子又能換1瓶汽水,此時你手裏就有1+1=2個空瓶子。

2個空瓶子又能換1瓶汽水,此時你手裏就有1個空瓶子。

也就是說只要你手裏的空瓶子數大於1,就能接著喝。下面我們代碼實現以下:

#include <stdio.h> #include <windows.h> #include <assert.h> int drink_water(int money) { assert(money); int bottle = money; int empty = money; while(empty > 1) //你手裏的空瓶子數大於1,表明你還可以繼續喝 { bottle += empty / 2; //兩個空瓶子可以換一瓶汽水 empty = empty / 2 + empty % 2; //空瓶子現在是換了之後的瓶子和剩下的空瓶子之和 } return bottle; } int main() { int money = 0; printf("請輸入總金額>") ; scanf("%d",&money); printf("最多能喝 %d 瓶!\n",drink_water(money)); system("pause"); return 0; } 技術分享技術分享 技術分享
技術分享技術分享 技術分享 可以發現,不管你有多錢,喝完之後手裏還有一個空瓶子,教你個小方法可以讓你再喝一瓶: 你可以向商店老板借一個空瓶子並說等會還你,這時候你手裏就有兩個空瓶子了,可以去換一瓶汽水, 喝完就有一個空瓶子了,然後再還給老板,這時候你總共就喝了2*money瓶汽水了。(前提是老板願意借你一個)

編程實現喝汽水問題