一.设计思路
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 }
三.测试结果
四.总结
此次试验只要发现了每十个为一组的规律后,实验就非常简单了。