书店折扣问题

1.设计题目

      书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
                               本数                  折扣
                                 2                    5%
                                 3                    10%
                                 4                    20%
                                 5                    25%

2.设计要求

     根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
     设计算法能够计算出读者购买一批书的最低价格。
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。

3.设计思想

    能够确定的是5本下的购买数量,买不同卷的书是最便宜的,大于5本的需要分两种情况, 6本5,1分配;7本5,2分配;8本4,4分配,9本,5,4分配,10本,5,5分配为最佳。

4.代码

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int num;
 6     int m;
 7     int n,d;
 8     double sum;
 9     do{
10         cout<<"请输入要买图书本书:";
11         cin>>num;
12     
13         if(num<=0)
14         {
15             cout<<"请重新输入要买图书个数:";
16         }
17         else if(num>0)
18         {
19             m=num/5;
20             n=num%5;
21             if(m==0)
22             {
23                 if(n==0)
24                 {
25                     sum=0;
26                 }
27                 else if(n==1)
28                 {
29                     sum=8;
30                 }
31                 else if(n==2)
32                 {
33                     sum=8*2*(1-0.05);
34                 }
35                 else if(n==3)
36                 {
37                     sum=8*3*(1-0.10);
38                 }
39                 else if(n==4)
40                 {
41                     sum=8*4*(1-0.20);
42                 }
43             }
44             else if(m>0)
45             {
46                 if(n==0)
47                 {
48                     sum=5*m*8*(1-0.25);
49                 }
50                 else if(n==1)
51                 {
52                     sum=5*8*m*(1-0.25)+8;
53                 }
54                 else if(n==2)
55                 {
56                     sum=5*8*m*(1-0.25)+8*2*(1-0.05);
57                 }
58                 else if(n==3)
59                 {
60                     sum=5*8*(m-1)*(1-0.25)+8*4*2*(1-0.20);
61                 }
62                 else if(n==4)
63                 {
64                     sum=5*8*m*(1-0.25)+8*4*(1-0.20);
65                 }
66             }
67             cout<<"最低价格为:"<<sum<<""<<endl;
68             cout<<"如果需要计算其他数量的价格请输1,否则0:";
69       cin>>d;
70       cout<<endl;}
71     }
72     while(d==1);
73     return 0;
74 }

5、程序截图

6、实验感想

  要对输入的变量进行运算时输入语句要放在运算语句前,否则无法运行,这是本次编程遇到的错误。我感觉这个程序可以用函数调用来做,可能代码会容易读一点,可能会少几个大括号吧。。

原文地址:https://www.cnblogs.com/cuipengbo/p/4429643.html