最优购书问题

一、题目描述

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

  根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。 设计算法能够计算出读者购买一批书的最低价格。

二、设计思路

  无论购买数的数量多少,均与6~10这5个数类似,或者说是相关,算出在这5中情况下最优购书方法,基本可以确定其他数目的最优购书方法。计算可得如下结果,

  6本,以5,1方式购买最实惠;

  7本,以5,2方式购买最实惠;

  8本,以4,4方式购买最实惠;

  9本,以5,5方式购买最实惠;

  10本,以5,5方式购买最实惠。

  书写过程中判断了两个大的判断条件,即书的数目没有超过10和超过10,来改变输出结果的不同(结果文字描述的差别)

三、代码实现

 1 //刘双渤,以最优惠的价格购买图书问题
 2 #include <iostream>
 3 using namespace std;
 4 
 5 void main()
 6 {
 7     int n;
 8     int kyu,kshang;
 9 
10     cout<<"请输入购书本书:"<<endl;
11     cin>>n;
12 
13     while(n <= 0)                         //数目小于等于0为不合法
14     {
15         cout<<"输入值有错,请重新输入:"<<endl;
16         cin>>n;
17     }
18 
19     if(n <= 10 && n > 0)                  //书的数目小于等于10
20     {
21         if(n == 8)
22         {
23             cout<<"购2套书,每不同4本为一套。"<<endl;
24         }
25         else if(n == 10)
26         {
27             cout<<"购2套书,每不同5本为一套。"<<endl;
28         }
29         else
30         {
31             kshang = n/5;
32             kyu = n%5;
33 
34             if(kshang == 0)
35             {
36                 cout<<"购1套书,每不同"<<kyu<<"本为一套。"<<endl;
37             }
38             else if(n == 5)
39             {
40                 cout<<"购1套书,每不同5本为一套。"<<endl;
41             }
42             else
43             {
44                 cout<<"购2套书,不同"<<kyu<<"本为一套,不同5本为一套。"<<endl;
45             }
46         }
47     }
48     else                                       //数目大于10
49     {
50         kshang = n/5;
51         kyu = n%5;
52 
53         if(kyu == 3)
54         {
55             cout<<""<<kshang + 1<<"套书,"<<kshang - 1<<"套为不同5本为一套,"<<"2套为不同4本为一套。"<<endl;
56         }
57         else if(kyu == 2 || kyu == 4)
58         {
59             cout<<""<<kshang + 1<<"套书,"<<kshang<<"套为不同5本为一套,"<<"1套为不同"<<kyu<<"本为一套。"<<endl;
60         }
61         else if(kyu == 1)
62         {
63             cout<<""<<kshang + 1<<"套书,"<<kshang<<"套为不同5本为一套,"<<"1套为1本为一套。"<<endl;
64         }
65         else
66         {
67             cout<<""<<kshang<<"套书,"<<"全部为5本不同为一套。"<<endl;
68         }
69     }
70 }
View Code

四、实现截图

五、个人总结

  题目虽然简单,但却能考验一下严谨性,写的代码可能相对有些长,也面面俱到了。

  还有记性真是有点差。

转载于:https://www.cnblogs.com/little-clever/p/4505090.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值