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