• 求买书的最低费用


    一.设计思路

      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 }

    三.测试结果

    四.总结

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

  • 相关阅读:
    [数据库]Mysql蠕虫复制增加数据
    [YII2.0] 高级模板简单安装教程
    PHP 将字符串转换为字符集格式UTF8/GB2312/GBK 函数iconv()
    [腾讯云]简单在腾讯云 CenTOS7.0 安装Nginx,Mysql(MariaDB),Memcache,解析PHP!
    cojs 简单的01串 题解报告
    5.13 考试修改和总结
    cojs 简单的最近公共祖先 解题报告
    5.11 考试 修改+总结
    My_Plan part1 小结
    cojs 简单的数位DP 题解报告
  • 原文地址:https://www.cnblogs.com/pengchengwanli/p/5543898.html
Copyright © 2020-2023  润新知