一、題目要求與設計思路
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 }
三、運行結果截圖

四、心得體會
這個題目一開始看著挺不好計算的,但是再復雜再大的高樓都有一個基礎,那麼這道題目來說,店裡給的折扣說明就是基礎,我們只需要按著這個基礎往上考慮就好了,所以,軟件開發,尤其像這一類的實現肯定會有辦法,找到實質性的東西,找到什麼是變量,什麼是不變的量,什麼是基礎就好辦了。