題目
書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編号0、1、2、3、4表示,單獨一卷售價8元,具體折扣如下所示:
本數 折扣
2 5%
3 10%
4 20%
5 25%
1 根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書隻會對應一個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5%的折扣,另外一本卷一則不享受優惠。
2 設計算法能夠計算出讀者購買一批書的最低價格。
3 要求将設計思想、代碼實作、實作截圖、個人總結以博文的形式發表。
設計思想
根據折扣和買書數量可以知道:當買書量大于10本時,将數量進行求餘,算出當買6、7、8、9本書時的最小價格,其餘能夠被5整除的直接用買5套的折扣價即為最優方案。
源代碼
#include<iostream>
using namespace std;
float priceLowest;
void f(int bookNum)
{
int N;
N=bookNum%5;
switch(N)
{
case 0:
priceLowest=bookNum*8*0.75;
break;
case 1:
priceLowest=(bookNum-N)*8*0.75+8;
break;
case 2:
priceLowest=(bookNum-N)*8*0.75+2*8*0.95;
break;
case 3:
priceLowest=(bookNum-N)*8*0.75+4*8*0.8*2-5*8*0.75;
if(bookNum<5)
{
priceLowest+=0.4;
}
break;
case 4:
priceLowest=(bookNum-N)*8*0.75+4*8*0.8;
break;
default:
cout<<"Error!"<<endl;
}
}
void main()
{
int q=0;
while(q==0)
{
int bookNum;
cout<<"請輸入購買數量:";
cin>>bookNum;
f(bookNum);
cout<<"最低價格為:"<<priceLowest<<endl;
cout<<"是否繼續測試?(輸入0繼續)";
cin>>q;
}
}
程式截圖

實驗總結
這次實驗的主要面臨的問題就是購買6-9本書和購買11-14本書是否進行%5求餘的問題,解決了這個問題就基本可以寫出複雜程度較低的算法來了