March 1, 2009

程式考題練習

手邊沒題目,那我就自己出題啦
反正大同小異,比如說電費計算
至於那個夏日不夏日的,我就不寫了,相信大家一定會

0~110       每度2元
111~330   每度3元
331~500   每度4元
501以上    每度5元

比如說給350度
算法如下
總金額=110x2 + (330-110)x3 + (350-330)x4


就簡單搞個視窗,如下

那照我們上學期學的方法來寫的話,可以有下面幾種寫法

Way 1  通常用If來做

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim x As Integer
        x = CInt(TextBox1.Text)

        If x >= 0 And x <= 110 Then
            TextBox2.Text = x * 2
        ElseIf x > 110 And x <= 330 Then
            TextBox2.Text = 110 * 2 + (x - 110) * 3
        ElseIf x > 330 And x <= 500 Then
            TextBox2.Text = 110 * 2 + (330 - 110) * 3 + (x - 330) * 4
        ElseIf x > 500 Then
            TextBox2.Text = 110 * 2 + (330 - 110) * 3 + (500 - 330) * 4 + (x - 500) * 5
        Else
            TextBox2.Text = "請重新輸入數值"
        End If

    End Sub
End Class

這樣就完成了,我們發現,中間那又臭又長的東西
我們自己算完就好啦
所以,下面是偷懶的方法,不過要自己算完XD

Way 2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim x As Integer
        x = CInt(TextBox1.Text)

        If x >= 0 And x <= 110 Then
            TextBox2.Text = x * 2
        ElseIf x > 110 And x <= 330 Then
            TextBox2.Text = 220 + (x - 110) * 3
        ElseIf x > 330 And x <= 500 Then
            TextBox2.Text = 880 + (x - 330) * 4
        ElseIf x > 500 Then
            TextBox2.Text = 1560 + (x - 500) * 5
        Else
            TextBox2.Text = "請重新輸入數值"
        End If

    End Sub
End Class

當然用Select也可以,各位自己去玩
我自己是用副函式去寫這題,各位可以參考課本第七章
看完以後應該就會知道我在寫什麼,這次我有點懶得解釋Orz

Way 3



Public Class Form1

自定遞迴函數money
    Function money(ByVal x As Integer)
        If x < 0 Then
            Return "請重新輸入數值"
        ElseIf x <= 110 Then
            Return x * 2
        ElseIf x <= 330 Then
            Return (x - 110) * 3 + money(110)
        ElseIf x <= 500 Then
            Return (x - 330) * 4 + money(330)
        ElseIf x > 500 Then
            Return (x - 500) * 5 + money(500)
        End If

    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

直接呼叫函數money來使用
        TextBox2.Text = money(CInt(TextBox1.Text))

    End Sub
End Class

我是覺得這方法比較快啦,也比迴圈好寫
這方法各位看得懂就參考看看,考試用前兩種就足夠了

但是這學期過完要學會第三種方法就是了
以上~

0推薦此文章
Today's Visitors: 0 Total Visitors: 111
Personal Category: 程式相關 Topic: feeling / personal / murmur
Previous in This Category: VB程式小教學 - 期末考練習題篇   Next in This Category: 程式設計作業1
[Trackback URL]

Reply
  • 1樓

    1樓搶頭香

    太棒了 哈哈 我還在煩惱ˇ都有點忘了說
    謝囉~

  • 阿達 at March 1, 2009 02:33 PM comment
Post A Comment









Yes No



Please input the magic number:

( Prevent the annoy garbage messages )
( What if you cannot see the numbers? )
Please input the magic number

誰來收藏
Loading ...
unlog_NVPO 0