一.设计思路

  1.在主函数中输入购买书的数量;

  2.调用计算函数将购买的书的数量作为参数传递;

  3.在计算函数中给出折扣信息以及5本书以下的最低费用;

  4.由思考得知,1到10本书的最低费用是不同的计算,10本之后的最低费用计算都是在前10本书最低费用的基础上进行计算的;

  5.用switch将情况分为10类,计算最低费用;

  6.在主函数中输出所求得的最低费用;

  7.成功后添加购买方案。

二.代码实现

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int display(int group, int values)
 5 {
 6     if (values == 0)
 7     {
 8         cout << "五本不同的书各买" << 2 * group << "本时,所花费用最低!" << endl;
 9     }
10     else if (values < 5)
11     {
12         cout << "五本不同的书各买" << 2 * group << "本,再单买" << values << "本不同的书时,所花费用最低!" << endl;
13     }
14     else if (values == 5)
15     {
16         cout << "五本不同的书各买" << 2 * group + 1 << "本时,所花费用最低!" << endl;
17     }
18     else if (values == 8)
19     {
20         cout << "五本不同的书各买" << 2 * group << "本,再单买两套(每套四本不同的书)时,所花费用最低!" << endl;
21     }
22     else
23     {
24         cout << "五本不同的书各买" << 2 * group + 1 << "本,再单买" << values - 5 << "本不同的书时,所花费用最低!" << endl;
25     }
26     return 0;
27 }
28 
29 double GetLowestPrice(int number)
30 {
31     double lowestprice;    //最低费用
32     double price = 8;    //单价
33     double discount[5] = { 0, 0.05, 0.1, 0.2, 0.25 };    //买1,2,3,4,5本书各自的折扣
34     int group = number / 10;    //number除以10的商(每10本一组)
35     int values = number % 10;    //number除以10的余数
36     double base = 5 * 2 * (1 - discount[4]) * 8 * group;    //买10的整数倍本书的最低价格
37     double price2 = price * 2 * (1 - discount[1]);    //买两本书的最低价格
38     double price3 = price * 3 * (1 - discount[2]);    //买三本书的最低价格
39     double price4 = price * 4 * (1 - discount[3]);    //买四本书的最低价格
40     double price5 = price * 5 * (1 - discount[4]);    //买五本书的最低价格
41     switch (values)
42     {
43     case 0:
44         lowestprice = base; 
45         display(group, values); break;
46     case 1:
47         lowestprice = base + price;
48         display(group, values); break;
49     case 2:
50         lowestprice = base + price2;
51         display(group, values); break;
52     case 3:
53         lowestprice = base + price3;
54         display(group, values); break;
55     case 4:
56         lowestprice = base + price4;
57         display(group, values); break;
58     case 5:
59         lowestprice = base + price5;
60         display(group, values); break;
61     case 6:
62         lowestprice = base + price + price5;
63         display(group, values); break;
64     case 7:
65         lowestprice = base + price2 + price5;
66         display(group, values); break;
67     case 8:
68         lowestprice = base + price4 + price4;
69         display(group, values); break;
70     case 9:
71         lowestprice = base + price4 + price5; 
72         display(group, values);
73     }
74     return lowestprice;
75 }
76 
77 int main()
78 {
79     int number;    //书的数量
80     double LowestPrice;    //所购书的最低价
81     cout << "请输入要购买的书的数量:";
82     cin >> number;
83     LowestPrice = GetLowestPrice(number);
84     cout << "购买" << number << "本书所花的最低费用是:" << LowestPrice << "元!" << endl;
85     return 0;
86 }

三.测试结果

四.总结

  此次试验只要发现了每十个为一组的规律后,实验就非常简单了。