课堂练习---最低价格买书
書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編號0、1、2、3、4表示,單獨一卷售價8元, 具體折扣如下所示:
本數 折扣
2 5%
3 10%
4 20%
5 25%
根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應一個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5%的折扣,另外一本卷一則不享受優惠。
設計算法能夠計算出讀者購買一批書的最低價格。
思路:首先算出1到10本的最低價格,
1本 8元
2本 15.2元 按照兩本的折扣 (和上一個階段差7.2元)
3本 21.6元 按照三本折扣 不能按照2 1分 (和上一個階段差6.4元)
4本 25.6元 按照4本折扣(和上一個階段差4元)
5本 30元 按照5本折扣 (和上一個階段差4.4元)
6本 38元 按照5+1本 最優
7本 45.2元 按照4+3本 最優
8本 51.2元 按照4+4本 最優
9本 55.6元 5+4本 最優
10本 60元 5+5本 最優
發現:首先在紙上從1開始計算找規律,發現當這個數依次減5后出現8時,買2套4卷不一樣的書時價格是最便宜的,其他情況下都是買5卷不一樣的,然后剩下小于5本的就按照折扣價格購買。
源代碼:
#include <iostream> using namespace std; void main() {int n; //書的本數int a = 0, b = 0; //a為當本數大于5的時候,表示有幾個5,則計算幾倍的5本價錢。b表示剩余的不足5本的價格。double sum; //sum表示總價格cout << "請輸入要買的書的本數:" << endl;cin >> n;a = n / 5;b = n % 5;if(n == 3)sum = 3 * 8 * (1 - 0.1);else{if(b == 0)sum = a * 5 * 8 * (1 - 0.25);if(b == 1)sum = a * 5 * 8 * (1 - 0.25) + 8;if(b == 2)sum = a * 5 * 8 * (1 - 0.25) + 2 * 8 * (1 - 0.05);if(b == 3)sum = (n - 8) / 5 * 5 * 8 * (1 - 0.25) + 4 * 2 * 8 * (1 - 0.2);if(b == 4)sum = a * 5 * 8 * (1 - 0.25) + 4 * 8 * (1 - 0.2);}cout << "總價格為:" << sum << "元。" << endl; }總結:題本身很簡單,只要從第一本開始列出來,找出其中的規律,程序思路很容易就出來了。
轉載于:https://www.cnblogs.com/diyunfei/p/5561065.html
總結
以上是生活随笔為你收集整理的课堂练习---最低价格买书的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript注意点(1)
- 下一篇: Android深度探索读书笔记 第六章