一、题目要求
本数 折扣
2 5%
3 10%
4 20%
5 25%
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。(截止日期2015-4-15晚18:00)
二、设计思想
首先注意到小于5本书的时候,套用现有的优惠条件就是最优惠的方案;
如果书的数目大于10本,此时可以简化成买几个5本和一次6到10本这样的方案来达到最优惠的目的;
对6~10本进行简单的计算算出:
6本:分解成5+1本;总价为:30+8元
或分解成4+2本;总价为:25.6+15.2元
或分解成3+3本;总价为:21.6+21.6元
可以看出5+1本最划算;
7本:分解成5+2本;总价为:30+15.2元
或分解成4+3本;总价为:21.6+25.6元
可以看出5+2本最划算;
8本:分解成5+3本;总价为:30+21.6元
或分解成4+4本;总价为:25.6+25.6元
可以看出4+4本最划算
9本:分解成5+4本;总价为:30+25.6元
此时为最划算(只有这一种情况)
10本:买两个5本就行;
三、源代码
#include <iostream.h> #include <conio.h> int main(void) { int n; cout<<"请输入要买几本书?"<<endl; cin>>n; if(n<6) { cout<<"请重新输入大于5的书目:"; cin>>n; } int a=n%5; int b=n/5; switch(a) { case 1: cout<<"您先买"<<b*5<<"本书,"<<"再买1本书最划算"<<endl; cout<<"总价为:"<<b*30+8<<"元"; break; case 2: cout<<"您先买"<<b*5<<"本书,"<<"再买2本书最划算"<<endl; cout<<"总价为:"<<b*30+15.2<<"元"; break; case 3: cout<<"您先买"<<(b-1)*5<<"本书,"<<"再买两次4本书最划算"<<endl; cout<<"总价为:"<<(b-1)*30+51.2<<"元"; break; case 4: cout<<"您先买"<<b*5<<"本书,"<<"再买4本书最划算"<<endl; cout<<"总价为:"<<b*30+25.6<<"元"; break; case 0: cout<<"您直接买"<<b*5<<"本书最划算"<<endl; cout<<"总价为:"<<b*30<<"元"; break; } //继续吗? int con; cout<<endl<<"继续吗?是输入1,否输入0:"; cin>>con; if(con==1) { main(); } else { return 0; } getch(); return; }
四、结果截图
五、总结
队友:程鹏远
队友特点是编程能力比我好,但是有时候有些问题会卡到一个地方很久才能出来。
经过这么多次的结队开发我们也从这里学到了很多的东西,例如之前我们看到题目就会去敲代码,边敲边想,所以很多时候我们会在这个过程中遇到很多问题,浪费了很多的时间。然而现在我们会先对问题进行分析然后去设计算法,最后才去代码实现,这样我们明显感觉节省了很多时间!