如何买到更便宜的书

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

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

设计代码

#include<iostream>
using  namespace  std;

void main()
{
 int  a,b,c;
 double  price;
 cout<<"请输入要买书的本数:";
 cin>>a;
 b=a/10;
 c=a%10;
 switch(c)
 {
    price=0;
    case 0:
    price=60*b;
    break;
    case 1:
    price=60*b+8;
       break;
    case 2:
       price=60*b+15.2;
       break;
    case 3:
    price=60*b+21.6;
       break;
    case 4:
       price=60*b+25.6;
       break;
    case 5:
    price=60*b+30;
       break;
    case 6:
       price=60*b+38;
       break;
    case 7:
    price=60*b+41.2;
       break;
    case 8:
       price=60*b+51.2;
       break;
    case 9:
    price=60*b+55.6;
       break;
 }
 cout<<"需要最少的钱为:"<<price;
}

思路:从买一本开始算,一直算到第十本,就可以知道1-10 本中最便宜的方案,超过十本之后你在慢慢仔细去算,就可以发现他们其实就是前面十本以内的搭配,例如11本就是5+5+1,21本就是5+5+5+5+1,这样就可以把算法转换到十本以内来计算。

总结:switch语句早早的忘光了,原来在case后面是:而不是;还有break的作用真的很大,我第一次有一个地方没有加break,导致10笨的时候算到是68而不是60找了好久这个错误才找到,学会了一个知识点。

posted on 2015-05-14 23:32  怎么这么多名字  阅读(308)  评论(0编辑  收藏  举报