VB程式小教學 - 期末考練習題篇
這是課本5-46的練習題,我只寫第5題
其他題目應該不難,同學自己做做看
還有這題公尺數那邊我懶得用CInt取值,有需要同學自己加
---------------------分隔線---------------------
嗯,覺得下面解釋太複雜請自行略過,先試著看程式碼
不會的地方再來看解釋,而程式本來就有很多種寫法
各位可以自己去實驗自己喜歡的作法
方法1 - 巢狀判別式
介面

程式碼

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim counter As Integer
counter = 0
If TextBox1.Text < 1500 Then
TextBox2.Text = 80
Else
If TextBox1.Text Mod 500 > 0 Then
counter = 1 + ((TextBox1.Text - 1500) \ 500)
Else
counter = (TextBox1.Text - 1500) \ 500
End If
TextBox2.Text = 80 + 5 * counter
End If
End Sub
解釋
Dim counter As Integer
counter = 0
首先這行是設定一個叫做counter的變數
這個counter我是拿來當最下面計算用的
也就是跳了幾次錶
題目說1500公尺前算80元,1500公尺以後每500公尺就要加5元嘛
所以1500公尺以後的計算式子就變成
總價 = 80 + 5 x counter
這樣各位了解了嗎?
If TextBox1.Text < 1500 Then
TextBox2.Text = 80
這兩行就是說如果公尺數小於1500的話,那車資就等於80元了
Else
If TextBox1.Text Mod 500 > 0 Then
counter = 1 + ((TextBox1.Text - 1500) \ 500)
*運算符號功能課本3-30頁有,忘了請回去看
這裡的Else是說如果公尺數沒有小於1500的情況下所做的動作
判別是將它除以500取餘數,也就是用運算子"Mod",而後看看它有沒有剩餘
比如說1600 / 500 = 3於100,那麼它有剩,那照課本上說不滿500以500公尺來算
那麼多出來的100公尺要等於直接加一次跳錶囉,那麼
我們記得要把跳錶數+1,其他部分就直接取"整數除法" 也就是符號"\"而不是用"/"
Ex:2100公尺丟進去
那麼我們用算的是車資 = 90元;也就是跳錶兩次,那看看程式有沒有符合
2100 Mod 500 = 100
100 > 0
而後counter = 1 + ((2100 - 1500) \ 500)
= 1 + (600 \ 500)
= 1 + 1
= 2
符合結果
下面這行就接續上面的判別,如果除以500沒有餘數的話呢?
那就是整除了,整除就不用再跳錶一次了,所以計算式子不同
Else
counter = (TextBox1.Text - 1500) \ 500
End If
跳錶數就不用再多算一次了,而到這裡跳錶數(counter)已經計算完畢
TextBox2.Text = 80 + 5 * counter
End If
這邊就是輸出的部份了,就是放面所說的
總價 = 80 + 5 x 跳錶數
方法1解決
---------------------分隔線---------------------
方法2 - IIf
用簡單的IIf解決,可以省事很多
一樣打在Button1的底下
程式碼
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim counter, point As Integer
counter = 0
If TextBox1.Text < 1500 Then
TextBox2.Text = 80
Else
point = (TextBox1.Text - 1500) \ 500
counter = IIf(TextBox1.Text Mod 500 > 0, 1 + point, point)
TextBox2.Text = 80 + 5 * counter
End If
End Sub
主要是再多加一個point變數
另它等於(TextBox1.Text - 1500) \ 500
而後使用IIf來搞定就OK了
IIf格式:
IIf(判別條件,成立的值,不成立的值)
再來就是用迴圈了
---------------------分隔線---------------------
方法3 - While迴圈
看得懂的就看,基本上我寫爽的,但是簡單非常多
一樣打在Button1的底下
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x, change As Integer
x = TextBox1.Text - 1500
While x > 0
change += 5
x -= 500
End While
TextBox2.Text = 80 + change
End Sub
嗯,簡單多了,有沒有覺得程式越寫越短的感覺啊XD?
迴圈這學期因為教太慢的關係,所以都沒機會碰到
但是下學期會碰到,等有碰到再說吧,看爽就好
---------------------分隔線---------------------
嗯,方法4
別學我,偷懶是不好的習慣
好孩子不要學,寫出來很靠背
一行寫出來,看得懂的就看吧
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = 80 + IIf(TextBox1.Text >= 1500, Math.Ceiling((TextBox1.Text - 1500) / 500) * 5, 0)
End Sub
簡單明瞭
本來還想PO副函式寫的版本,後來想說算了
副函式不適合用在這簡單的東西上面,寫出來會更多行 (茶
就這樣
Previous in This Category: VB程式小教學 - 真值表概念 Next in This Category: 程式考題練習

Sealed (Apr 25)
1樓
1樓搶頭香
感動感動~
您真是我們電腦白癡的救星
大推~
ps:那些看過不回文的~你們會有現世報的
0.0 今天才看到回覆
對你們有幫助就好~
2樓
2樓頸推
感恩感恩!!!
不會=w=
3樓
3樓坐沙發
我頂~~~~~
別頂太兇XD