每瓶汽水一元,两个空瓶可以置换一瓶汽水,现有N元,最多能喝多少瓶?
--------------------------------------------------------------------------------
? ? ?這是一個(gè)很容易出錯(cuò)的題;假如有20元,一共能喝sum瓶汽水,每?jī)蓚€(gè)空瓶可以換一瓶汽水;第一次可以買20瓶,則sum=20,此時(shí)剩下20個(gè)空瓶;用這20十個(gè)空瓶可以換10瓶汽水,此時(shí)sum=20+10;則又有十個(gè)空瓶,可以換5瓶汽水,此時(shí),sum=20+10+5;注意:此時(shí)5/2=2余下一個(gè)空瓶;記作count=1;此時(shí)sum=20+10+5=2;然后用這個(gè)兩個(gè)空瓶又可以換一瓶,此時(shí)sum=20+10+5+2+1;當(dāng)這一瓶喝完后,由于1/2=0;現(xiàn)在有的同學(xué)就說(shuō)20元一共可以喝38瓶汽水。但你錯(cuò)了,之前還余了一個(gè)空瓶加上最后這個(gè)空瓶一共兩個(gè),可以再換一瓶,所以,最終結(jié)果是:sum=20+10+5+2+1+1=39瓶。另外,如果這最后兩瓶喝完了再向老板借一個(gè)空瓶,然后又可以兌換一瓶,完了再將這個(gè)空瓶還給老板,此時(shí)sum=40,本程序不做此考慮。
--------------------------------------------------------------------------------
C語(yǔ)言源碼為:
#?include?<stdio.h> #?include?<stdlib.h>int?main() {int?piece?=?1;int?money?=?0;int?sum?=?0;int?E_bottle?=?0;int?left?=?0,?ret?=?0;??????????????printf("請(qǐng)輸入金額:");scanf("%d",&money);sum?=?money?/?piece;E_bottle?=?sum;while?(E_bottle){E_bottle?=?E_bottle?/?2;sum?+=?E_bottle;if?(E_bottle?==?1){left++;???????????????//1/2時(shí)余留一個(gè)空瓶}}E_bottle?=?money?/?piece;while?(E_bottle){ret?=?E_bottle?%?2;E_bottle?=?E_bottle?/?2;if?(ret?==?1){left++;????????????????//5/2是余一個(gè)空瓶}}sum?+=?left?/?2;printf("%d元最多可以喝:%d瓶汽水\n",money,sum);system("pause");return?0; }------------------------------------------------------------------------------------------
干貨小知識(shí):const修飾全局變量時(shí),存儲(chǔ)在只讀區(qū)(代碼段區(qū)),不能通過(guò)指針修改其值,const修飾
局部變量時(shí),存儲(chǔ)在棧區(qū),可以通過(guò)指針修改其值,VS下會(huì)報(bào)出警告,一般情況下,我們不修改const修
飾的變量。
------------------------------------------------------------------------------------------
轉(zhuǎn)載于:https://blog.51cto.com/814193594/1708918
總結(jié)
以上是生活随笔為你收集整理的每瓶汽水一元,两个空瓶可以置换一瓶汽水,现有N元,最多能喝多少瓶?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 你真的会玩SQL吗?EXISTS和IN之
- 下一篇: Makefile 使用总结