课堂练习——计算法能够计算出读者购买一批书的最低价格。

1.题目。

书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,

单独一卷售价8元, 具体折扣如下所示:
                          本数                  折扣
                          2                       5%
                          3                       10%
                          4                       20%
                          5                       25%

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,

例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。

2.设计思想。

因为除了买8本,13本...(5^n+8)(n>=1)本以外,不论买多少本,都应该按最大折扣5本计算,才能使得买这一批书价格最低。

3.代码。

#include<iostream.h>
int main()
{
    int k,m,n;
    double sum=0;
    cout<<"  书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,"<<endl;
    cout<<"单独一卷售价8元, 具体折扣如下所示:"<<endl;
    cout<<"     本数                  折扣"<<endl;
    cout<<"       2                     5%"<<endl;
    cout<<"       3                     10%"<<endl;
    cout<<"       4                     20%"<<endl;
    cout<<"       5                     25%"<<endl;
    cout<<endl;
    cout<<"请输入读者要购买的书籍个数:"<<endl;
    cin>>k;
    m=k/5;
    n=k%5;
        switch(n)
        {
        case 0:
            sum=m*40*0.75;
            break;
        case 1:
            sum=m*40*0.75+8;
            break;
        case 2:
            sum=m*40*0.75+16*0.95;
            break;
        case 3:
            if(m==0)
                sum=24*0.9;
            else
               sum=(m-1)*40*0.75+2*4*8*0.8;
            break;
        case 4:
            sum=m*40*0.75+32*0.8;
            break;
        }
    cout<<"读者购买一批书的最低价格为:"<<endl;
    cout<<sum<<""<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;
   return 0;
}

 

4.运行结果。

5.实验总结。

   有些问题是有规律的,只要掌握了规律就可以用很简单的算法实现一个感觉很复杂的问题。

posted @ 2015-04-14 21:53  努力的学渣  阅读(210)  评论(1编辑  收藏  举报