一、題目要求與設計思路
1.題目要求
書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編號0、1、2、3、4表示,單獨一卷售價8元, 具體折扣如下所示:本數 折扣
2 5%
3 10%
4 20%
5 25%
根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應一個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5%的折扣,另外一本卷一則不享受優惠。設計算法能夠計算出讀者購買一批書的最低價格。 2.設計思路 五本一下的情況就是基礎,其他所有比五本以上的情況都在該基礎之上,我們只需將買6、7、8、9本的用戶最低價格解決了,其他的就可以直接疊加了,通過計算,買6本的時候按5-25%打折、1本不打折方式價錢最少;買7本的時候按5-25%打折、2-5%打折方式價錢最少;買8本的時候按兩次4-20%打折方式價錢最少;買9本的時候按5-25%打折、4-20%打折方式價錢最少。然後用戶輸入購買數量i,利用下列語句實現a = i / 5;b = 30 * a;c = i % 5。 二、源代碼1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace youhuifangfa 11 { 12 public partial class Form1 : Form 13 { 14 double b, sum; 15 int a, i, c; 16 public Form1() 17 { 18 InitializeComponent(); 19 } 20 21 private void button1_Click(object sender, EventArgs e) 22 { 23 i = int.Parse(textBox1.Text); 24 if (i % 5 != 3) 25 { 26 a = i / 5; 27 b = 30 * a; 28 c = i % 5; 29 if (c == 0) 30 { 31 sum = b; 32 33 } 34 if (c == 1) 35 { 36 sum = b + 8; 37 } 38 else if (c == 2) 39 { 40 sum = b + 16 * 0.95; 41 } 42 else if (c == 3) 43 { 44 sum = b + 24 * 0.9; 45 } 46 else if (c == 4) 47 { 48 sum = b + 32 * 0.8; 49 } 50 51 } 52 else if(i%5==3&&i!=3) 53 { 54 a = i / 5; 55 b = 30 * (a - 1); 56 c = i % 5; 57 sum = b + 32 * 0.8 * 2; 58 } 59 else if (i == 3) 60 { 61 sum = 0.9 * 24; 62 } 63 textBox3.Text = sum.ToString(); 64 } 65 66 private void textBox1_TextChanged(object sender, EventArgs e) 67 { 68 69 } 70 } 71 }
三、運行結果截圖
四、心得體會
這個題目一開始看著挺不好計算的,但是再復雜再大的高樓都有一個基礎,那麼這道題目來說,店裡給的折扣說明就是基礎,我們只需要按著這個基礎往上考慮就好了,所以,軟件開發,尤其像這一類的實現肯定會有辦法,找到實質性的東西,找到什麼是變量,什麼是不變的量,什麼是基礎就好辦了。