→ lakers:嗯...謝謝...看起來真難啊...= = 推 218.167.15.230 11/22
常用關於陣列使用的問題: (以副程式方式描述)
(1) 輸入一個陣列
Open "d:\a.txt" For Input As #1
ReDim a(10)
n = 0
Do While Not EOF(1)
Input #1, i
Print i
n = n + 1
If (n > UBound(a)) Then
ReDim Preserve a(UBound(a) + 10)
End If
a(n) = i
Loop
Close #1
Print "+++++++++"
For i = 1 To n
Print a(i)
Next i
(2) 輸出一個陣列
Dim small, small_i, temp As Integer
For i = 1 To n
small = a(i)
small_i = i
For j = i + 1 To n
If a(j) < small Then
small = a(j)
small_i = j
End If
Next j
a(small_i) = a(i)
a(i) = small
Next i
Print "+++++++++"
For i = 1 To n
Print a(i)
Next i
(3) 反向輸出一個陣列
Open "d:\c.txt" For Output As #3
For i = n To 1 Step -1
Print #3, a(i)
Next i
Close #3
(4) 輸出陣列中大於 x 的所有資料值
x = Text1.Text
For i = 1 To n
If a(i) > x Then
Print "a("; i; ")= "; a(i)
End If
Next i
(5) 輸出陣列中是否有值為 x 的資料(直線搜尋)
x = Text1.Text
For i = 1 To n
If a(i) = x Then
Print "I found "; x
Exit Sub
End If
Next i
Print "I found nothing."
(6) 輸出陣列中資料值的總和
Dim sum As Integer
sum = 0
For i = 1 To n
sum = sum + a(i)
Next i
Print "sum = "; sum
(7) 輸出陣列中資料的最大值
Dim max_v As Integer
max_v = a(1)
For i = 2 To n
If (max_v < a(i)) Then max_v = a(i)
Next i
Print "nax_v = "; max_v
(8) 將陣列中的第 k 個位置的資料刪除, 原來在第 k 個位置後的資料均往前前進一個位
置,原先在第 k 個位置的資料將傳回給呼叫程式。
k = Text2.Text
For i = k To n - 1
a(i) = a(i + 1)
Next i
n = n - 1
Print "+++++++++"
For i = 1 To n
Print a(i)
Next i
(9) 輸出陣列的第 k 大值(注意陣列中的資料順序不可改變)
Dim counter As Integer
k = Text2.Text
For i = 1 To n
counter = 0
For j = 1 To n
If a(i) < a(j) Then
counter = counter + 1
End If
Next j
If counter + 1 = k Then
Print "第"; k; "大值="; a(i)
End If
Next i
For i = 0 To k - 1
: Print a(i)
: Next
: Print "第" ; k ; "大值是" ; a(k - 1)
(10) 假設陣列中的資料已經排序好了,輸出陣列中是否有值為 x 的資料(二元搜尋)
Dim l, h, m As Integer
x = Text1.Text
l = 1
h = n
Do While l <= h
m = (l + h) / 2
If a(m) = x Then
Print "a("; m; ")= "; a(m)
Exit Sub
ElseIf a(m) > x Then
h = m - 1
Else
l = m + 1
End If
Loop
(12) 撲克牌計算兩對、三條、Full house、同花等問題。(假設給定 Number, Flower)
For i = 0 To 4
number(i) = card(i) Mod 13 '牌號
flower(i) = card(i) \ 13 '花色
Next
'判別同花
For j = 0 To 3
If flower(j) <> flower(j + 1) Then Exit For
Next
If j > 11 Then lbloutput.Caption = "你有一副" & "同花"
'判別其他牌
For i = 0 To 12
time(i) = 0
Next
For i = 0 To 4
k = number(i)
time(k) = time(k) + 1
Next
For i = 0 To 4
total_time(i) = 0
Next
For i = 0 To 12
k = time(i)
total_time(k) = total_time(k) + 1
Next
If total_time(4) = 1 Then
lbloutput.Caption = "你有一副" & "鐵隻"
ElseIf total_time(3) = 1 Then
lbloutput.Caption = "你有一副" & "三條"
ElseIf total_time(3) = 1 And total_time(2) = 1 Then
lbloutput.Caption = "你有一副" & "Full House"
ElseIf total_time(2) = 2 Then
lbloutput.Caption = "你有一副" & "Two Pairs"
ElseIf total_time(2) = 1 Then
lbloutput.Caption = "你有一副" & "One Pair"
Else
lbloutput.Caption = "你什麼也沒有"
End If
(13) 利用兩階層的迴圈畫出下列三角形
*
**
***
****
*****
Dim i, j As Integer
For i = 1 To 4
For j = 1 To 4 - i
Print " ";
Next j
For j = 1 To i
Print "*";
Next j
Print
Next i
(14) 計算1*2*3*….*n
Dim i, n As Integer
Dim prod As Single
n = Text1.Text
prod = 1
For i = 1 To n
prod = prod * i
Next i
Print prod
(15) 計算1+2!+3!+....+n! , 計算
Dim i, n As Integer
Dim prod, s As Single
n = Text1.Text
s = 0
prod = 1
For i = 1 To n
prod = prod * i
s = s + prod
Next i
Print s
--
聽天使在唱歌 我們都要快樂
你手心傳來的愛我已接收到了
聽天使在唱歌 世界換新顏色
感動會放射 暖暖的熱
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.87.192