課堂練習-購書問題

問題:ios

 

  書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編號01234表示,單獨一卷售價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;
}

 試驗結果:

試驗總結:

     本次試驗要求學會總結規律,將一些困難問題仔細分析,經過尋找他們之間的規律,將問題簡單化。老師在下課以前簡單的說了一下編程思路,我就恍然大悟。我以爲讀懂題目真的很重要,要注意培養本身讀題審題的能力。

相關文章
相關標籤/搜索