个人项目——买书

用折后最低价买书

一、程序要求

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

本数                    折扣

2                       5%

3                       10%

4                       20%

5                       25%

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。

设计算法能够计算出读者购买一批书的最低价格。

二、程序设计思想

列举出买十本书以内的所有情况,从中找规律:买一本的时候不打折扣,价钱为 8;买两本的时候买最低价为 15.2(1+1);买三本的时候最低价为 21.6(1+1+1);买四本的时候最低价为25.6(1+1+1+1);买五本的时候最低价为30(1+1+1+1+1);买六本的时候最低价为 38(5+1);买七本的时候最低价为 45.2(5+1+1);买八本的时候最低价为 51.2(4+4);买九本的时候最低价为 55.6(5+4);买十本的时候最低价为 60(5+5)。按照上面的情况可以看出:购买8本书时,最低价并不是(5+3),所以每10本书是一个循环。书的总数除以10求余求商:余数部分按10本以内数目计算;商数部分按整套购买计算。按此类推,算出最低价。

三、源程序

//李俏  2016,6,2
//根据折扣,计算买书的最低价

#include<iostream>
using namespace std;

int main()
{
    int num;//书的数量
    double money;//折后的钱数
    int i; 

    cout << "请输入要买的书的数量:";
    cin >> num;
    while (num <= 0)
    {
        //exit(1);
        cout << "请重新输入要买的书的数量(数量必须为正数):";
        cin >> num;
    }

    i = num % 10;
    switch (i)
    {
    case 0:
        money = num / 5 * 40 * 0.75;
        break;
    case 1:
        money = num / 5 * 40 * 0.75 + 8;
        break;
    case 2:
        money = num / 5 * 40 * 0.75 + 8 * 2 * 0.95;
        break;
    case 3:
        money = num / 5 * 40 * 0.75 + 8 * 3 * 0.9;
        break;
    case 4:
        money = num / 5 * 40 * 0.75 + 8 * 4 * 0.8;
        break;
    case 5:
        money = num / 5 * 40 * 0.75 + 8 * 5 * 0.75;
        break;
    case 6:
        money = num / 5 * 40 * 0.75 + 8 * 5 * 0.75 + 8;
        break;
    case 7:
        money = num / 5 * 40 * 0.75 + 8 * 5 * 0.75 + 8 * 2 * 0.95;
        break;
    case 8:
        money = num / 5 * 40 * 0.75 + 8 * 4 * 0.8 * 2;
        break;
    case 9:
        money = num / 5 * 40 * 0.75 + 8 * 5 * 0.75 + 8 * 4 * 0.8;
        break;
    }
    cout << "这批书的折后价为:"<<money<<endl;

    return 0;
}

四、结果截图

五、心得体会  

  课堂上,老师引导我们:根据题设,列举各种情况并且计算各种可能的结果,经过比较得到最低价;再然后从购买10以内数量的书、得到的每个最低价中,找规律,但是由于自己的不自信、计算的结果不正确,没能找到规律;最后,老师给出了思路——书的总数超过10本时,也可按10本以内的计算方法计算,并且指出购买8本书是一个特殊情况。

  就实现来讲,相比前两次的课堂练习,这次的还是比较简单的,关键在于解题的思路和从中发现的规律。这次练习实现后,内心还有点儿小激动,因为题目不太复杂,可以把自己的理解以程序的形式呈现出来,但是激动之余,还是有些担心,担心能力不能提高、以后遇到问题还是解决不了。通过本次实验,我复习了一些常用的基础语法点,以后会更加熟练的。

时间: 2024-10-22 02:00:40

个人项目——买书的相关文章

谈谈买书与读书

干码农这行,读书是必不可少的.爱读书的人,经常会把"书一定要买来看的",或者"书非借不能读"之类的话挂在嘴边,这些话自然有一定的道理,但我在这里想稍微做点补充,这也是我本人在买书.读书方面的一些心得. 计算机的书,大体分两种,一种是技巧性的书籍,一种是理论性的书籍,在针对这两类书作出选择时,我的态度还是有一定的区别的. 从选择作者的角度来看,中国台湾的一些作家,和大陆的一些年轻作家在技巧性方面还是有一定的水平的,我指的是写作水平,比如eclipse方面的一些国内书籍

买书最优

一.题目要求 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数                  折扣 2                       5% 3                       10% 4                       20% 5                       25% 要求: 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购

编程之美之买书问题

拿到这个问题,我的第一反应是用贪心算法,优先满足不同种类多的,这样打的折扣比价多.但是,看了书中的分析发现,* 我们设定的贪心策略实际上是有问题的, ie 在买 5 + 3 本的时候会出错. 看到这里,书上说可以利用改进的贪心算法,感觉如果换了相应的折扣数量,可能又会有不同的结果了.因而,没有深入的研究下去. 既然,贪心算法不可行,那就用动态规划呗. 这里的动态规划思路很简单不过写起来有些复杂.我们这里用到了5维数组, 光是init 就写了好多. 其实我在写的时候,就在想有什么简单一点的方法可以

(动态规划)6049:买书

描述 小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元. 问小明有多少种买书方案?(每种书可购买多本) 输入 一个整数 n,代表总共钱数.(0 <= n <= 1000) 输出 一个整数,代表选择方案种类 样例输入 样例输入1:20 样例输入2:15 样例输入3:0 样例输出 样例输出1:2 样例输出2:0 样例输出3:0 我の代码 #include <iostream> int pri[5]; int dp[1001]; using namespace s

4月14号周二课堂练习:买书最优问题

一.问题提出 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数                   折扣 2                       5% 3                       10% 4                       20% 5                       25% 二.题目要求 1.根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣

课堂练习-买书价格最低

实验背景 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数 折扣 2 5%         3 10%         4 20%            5 25% 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠.       设计算法能够计算出读者购买一批书的最低价格. 一.设计思想此问题可以折算为如何取余

软件工程——买书折扣问题

1.题目 书店针对<哈利波特>系列书籍进行促销活动一共5卷,用编号0.1.2.3.4表示,单独一卷售价八元,具体折扣如下所示: 本书       折扣 2           5% 3          10% 4          15% 5          20% 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠.设计算法能够计算出读者购买一批书的最低价格. 2.设计思路 根据题目

OpenJudge百炼习题解答(C++)--题4040:买书问题

题: 总时间限制:  1000ms  内存限制:  65536kB 描述 某网上书店举行优惠促销,现有两种优惠策略.策略一是购书总额大于100元的可享受免费送货.策略二是如果购书数量大于3本,则购书总额享受95折优惠(不包括运费).两种优惠策略不能同时享受,最多可选择其中一种优惠策略.运费为20元.小明想在这个网站上买书,请帮他选择最优的优惠策略. 输入 有多行,第一行是买书的种类N(0 <= N <= 100),接下来的N行每行输入一种书目的购买数量M和代价P(P不一定是整数).当N为-1时

买书?买知识?

书是什么? 书籍只是知识的载体. 想要领会知识,还需要付出额外的时间和精力. 书贵么? 买书的几十元其实不算什么,珍贵的是读书的时间和注意力. 一本书只要有一部分内容有价值,有启发,自己收获了经验,最好还能联系实践.获得成长,那么就值回书价了. 如何做? 珍惜自己的时间,读好书,吸收好书内的知识. 同"爱读书.爱成长"的各位共勉!