买书最低价格

(1)题目:

     n书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示 本数 2,折扣5%;本数 3,折扣10%;本数4 ,折扣20%;本数5,折扣25%;根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。

(2)解题思路:

     在对这题目的解答时在所买数目比5本多时,通过对6本,7本,8本,9本书的计算,可以知道仅有8本书时分别的四本书比较便宜,而别的情况下都可以先计算5本书的整数和即其价格然后计算剩下的5以下数目的书的价格,在总书数(n)除5余数为3时,购买n/5-1套书即两个4本不同书;其他情况下购买n/5套数即余数本书。

(3)

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int i, j, k,u;
 7     double c;
 8     cout << "请输入您要买几本书:";
 9     cin >> i;
10     int a = i / 5;
11     u = a;
12     k = i % 5;
13     if (a == 0 && k == 3)
14     {
15         c = k * 8 * 0.9;
16         cout << "" << i << "本数所用最少钱数为" << c << endl << endl;;
17         cout << "其中买了3本书" << endl;
18     }
19     if (a!=0&&k==3)
20     {
21         c = 4 * 0.8 * 8*2;
22         u = a - 1;
23         double b = u * 5 * 8 * 0.75;
24         cout << "" << i << "本数所用最少钱数为" << c + b << endl << endl;;
25         cout << "其中买了" << u << "套书,两个不同的四本书" << endl;
26 
27     }
28     else if (k == 4)
29     {
30         c = k * 8 * 0.8;
31         double b = u * 5 * 8 * 0.75;
32         cout << "" << i << "本数所用最少钱数为" << c + b << endl << endl;
33         cout << "其中买了" << u << "套书和" << k << "个不同的书" << endl;
34     }
35     else
36     {
37         c = k*8*(1 - (k - 1)*0.05);
38         double b = u * 5 * 8 * 0.75;
39         cout << "" << i << "本数所用最少钱数为" << c + b << endl << endl;
40         cout << "其中买了" << u << "套书和" << k << "个不同的书"<<endl;
41     }
42     
43     return  0;
44 }

 

(4)截图:


(5)总结:

  在本次编程过程中在余数为3时出现了错误,因为一直考虑8本书时情况,只想了在5本书以上时余数为3时的情况,后来发现错误又将只买3本书的情况进行分析。

posted @ 2015-05-12 17:46  ruanjian1305  阅读(174)  评论(1编辑  收藏  举报