关于《哈利波特》书的购买方案

设计思路:

  

  通过计算发现,购买时只需按(x*5+y)(0<y<5),x套5本另外买y本(0<y<5)时价格最低,但是其中有一个列外,在x*5+2*4的情况这,按x套5本,2套4本购买比x套5本另外买y本便宜。所以便可以通过情况分析编程。

程序代码:  

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void main()
 5 {
 6     int x;
 7     cout << "请输入要购买的本数:" << endl; 
 8     cin >> x;
 9 
10     int i;
11     i = x/5;
12 
13     if (x < 5)
14     {
15         switch(x)
16         {
17         case 1:
18             cout << "买1本书最低价格为8元"<< endl;
19             break;
20         case 2:
21             cout << "买2本书最低价格为" << x*8*0.95 << ""<< endl;
22             break;
23         case 3:
24             cout << "买3本书最低价格为" << x*8*0.9 << ""<< endl;
25             break;
26         case 4:
27             cout << "买4本书最低价格为" << x*8*0.8 << ""<< endl;
28         }
29     }
30     else{
31         switch(x%5)
32         {
33         case 0:
34             cout << "" << i << "套5本的" << endl;
35             cout << "最低价格为:" << i*8*5*0.75<< endl;
36             break;
37         case 1:
38             cout << "" << i << "套5本的" << endl;
39             cout << "外加" << x%5 << "" << endl;
40             cout << "最低价格为:" << i*8*5*0.75 + (x%5)*8<< endl;
41             break;
42         case 2:
43             cout << "" << i << "套5本的" << endl;
44             cout << "外加" << x%5 << "" << endl;
45             cout << "最低价格为:" << i*8*5*0.75 + (x%5)*8*0.95 << endl;
46             break;
47         case 3:
48             cout << "" << i-1 << "套5本的" << endl;
49             cout << "外加2套4本" << endl;
50             cout << "最低价格为:" << (i-1)*8*5*0.75 + 2*4*8*0.8 << endl;
51             break;
52         case 4:
53             cout << "" << i << "套5本的" << endl;
54             cout << "外加" << x%5 << "" << endl;
55             cout << "最低价格为:" << i*8*5*0.75 + (x%5)*8*0.8 << endl;
56         }
57     }
58 }

结果截图:

个人总结:

  这道题挺简单的,但是怎样更简单的做出来才是最好的。通过分析,最后选择了这个方法。感觉还是这样简单。

原文地址:https://www.cnblogs.com/zrdm/p/4488792.html