問題:ios
書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編號0、1、2、3、4表示,單獨一卷售價8元, 具體折扣以下所示: 算法
本數編程 |
折扣app |
2spa |
5%設計 |
3orm |
10%xml |
4blog |
20%ci |
5 |
25% |
根據購買的卷數以及本數,會對應不一樣折扣規則狀況。單數一本書只會對應一個折扣規則,例如購買了兩本卷1,一本卷2,則能夠享受5%的折扣,另一本卷一則不享受優惠。設計算法可以計算出讀者購買一批書的最低價格。
解決方法:當購買書籍在1-5本之間的時候,購買不一樣的書籍最省錢,當購買6本時有3+3,4+2,5+1這三種方法,計算得5+1這種方法最省錢,當購買7本時有4+3,5+2這兩種方法,計算得5+2這種方法最省錢,當購買8本時有4+4,5+3這兩種方法,計算得4+4這種方法最省錢,當購買9本時有5+4這種方法,計算得5+4這種方法最省錢。當購買10本時有5+5這種方法,計算得5+5這種方法最省錢。由此分析得購買數量是以10本爲一個週期。當購買數量超過10本時,進入下一個循環週期。
代碼:
//李妍 //20133093 #include<iostream> using namespace std; int Money(int num) { double money; int N = (int) (num / 10); switch (num % 10){ case 0: money = 0; break; case 1: money = 1 * 8; break; case 2: money = 2 * 8 * 0.95; break; case 3: money = 3 * 8 * 0.9; break; case 4: money = 4 * 8 * 0.8; break; case 5: money = 5 * 8 * 0.75; break; case 6: money = 1 * 8 + 5 * 8 * 0.75; break; case 7: money = 5 * 8 * 0.75 + 2 * 8 * 0.95; break; case 8: money = 4 * 8 * 0.8 * 2; break; case 9: money = 5 * 8 * 0.75 + 4 * 8 * 0.8; break; } return N * 5 * 8 * 0.75 * 2 + money; } int main() { int num = 0;//數量 cout << "請輸入要買書的數量:" << endl; cin >> num; while (num == 0){ cout << "要買書的數量不能爲0!請從新輸入:" << endl; cin >> num; } cout << "當買" << num << "本書時,花費最少錢是:" << Money(num)<<"元。" << endl; return 0; }
試驗結果:
試驗總結:
本次試驗要求學會總結規律,將一些困難問題仔細分析,經過尋找他們之間的規律,將問題簡單化。老師在下課以前簡單的說了一下編程思路,我就恍然大悟。我以爲讀懂題目真的很重要,要注意培養本身讀題審題的能力。