Quiz2
'P1.成績檔處理:' 讀入學生成績檔(P1.in,欄位:座號、國、英、數),計算所有學生的個人總分。
' 將結果顯示出來,並輸出到輸出檔(P1.out)。
' 輸出檔內容格式如下:(平均求到小數下 1 位,答案僅供參考)
'開檔
FileOpen(1, "P1.in", OpenMode.Input)
'輸入 處理
Dim no, ans As String
Dim ch, en, ma As Integer
Do Until EOF(1)
Input(1, no) : Input(1, ch) : Input(1, en) : Input(1, ma)
ans &= no & "," & ch + en + ma & If(EOF(1), "", vbNewLine)
Loop
'輸出
Me.TextBox1.Text = ans
My.Computer.FileSystem.WriteAllText("P1.out", ans, False)
'關檔
FileClose(1)
'P2.文字檔十進位轉2 進位:
' 請設計一個程式讀取文字檔(P2.in,多筆),將每一列數字「十進位轉2 進位」。
' 將結果顯示出來,並對應輸出到輸出檔(P2.out)。
' 試用自定函式—Bin(n)來完成
'輸入
Dim s As String = ""
s = My.Computer.FileSystem.ReadAllText("P2.in")
'處理
Dim ans As String = ""
Dim row = Split(s, vbNewLine)
For i = 0 To UBound(row)
ans &= Bin(Val(row(i))) & If(i = UBound(row), "", vbNewLine)
Next
'輸出
Me.TextBox2.Text = ans
My.Computer.FileSystem.WriteAllText("P2.out", ans, False)
模組
Function Bin(n)
If n < 2 Then
Return n
Else
Return Bin(n \ 2) & n Mod 2
End If
End Function
'P3.【直角三角形列印: 軟體設計丙級】利用迴圈控制指令
' 由輸入檔(P3.in,1 筆)讀入整數數字,列印從1 開始直到該數字為止之直角三角形
' 並輸出到輸出檔(P3.out)。
'輸入
Dim s As String = ""
s = My.Computer.FileSystem.ReadAllText("P3.in")
'處理
Dim ans As String = ""
Dim i, j As Integer
For i = 1 To Val(s)
For j = 1 To i
ans &= i
Next
ans &= If(i = Val(s), "", vbNewLine)
Next
'輸出
Me.TextBox3.Text = ans
My.Computer.FileSystem.WriteAllText("P3.out", ans, False)
'P4.求最小公倍數lcm:
' 用inputbox 輸入兩個正整數A 及B,求出「最小公倍數」(l.c.m)。
' 試用自定函式—GCD(a, b)來完成求A 及B 之最大公因數
' 自定函式—lcm(a, b)來完成求A 及B 之最小公倍數
'輸入
Dim a, b As Integer
a = InputBox("輸入一個正整數A", "輸入兩個正整數A 及B,求出「最小公倍數」", 0)
b = InputBox("輸入一個正整數B", "輸入兩個正整數A 及B,求出「最小公倍數」", 0)
'處理
Dim ans As String = ""
ans = lcm(a, b)
'輸出
Me.TextBox4.Text = ans
模組
Function GCD(a, b)
If b = 0 Then
Return a
Else
Return GCD(b, a Mod b)
End If
End Function
Function lcm(a, b)
Return a * b / GCD(a, b)
End Function
'P5. 文字檔求 lcm:
' 續上題,請設計一個程式讀取文字檔(P5.in,多筆),輸入兩個正整數 A 及 B,求出「最小公倍數」(l.c.m)。
' 並對應輸出到輸出檔(P5.out)。
'開檔
FileOpen(1, "P5.in",OpenMode.Input)
'輸入 處理
Dim a, b As Integer
Dim ans As String = ""
Do Until EOF(1)
Input(1, a) : Input(1, b)
ans &= lcm(a, b) & If(EOF(1), "", vbNewLine)
Loop
'輸出
Me.TextBox5.Text = ans
My.Computer.FileSystem.WriteAllText("P5.out", ans, False)
'關檔
FileClose(1)
'Q1.【直角三角形列印: 軟體設計丙級】利用迴圈控制指令
' 由輸入檔(Q1.in,1 筆)讀入整數數字,列印從1 開始直到該數字為止之直角三角形
' 並輸出到輸出檔(Q1.out)
'輸入
Dim s As String = ""
s = My.Computer.FileSystem.ReadAllText("Q1.in")
'處理
Dim ans As String = ""
Dim i, j As Integer
For i = 1 To Val(s)
For j = 1 To i
ans &= j
Next
ans &= If(i = Val(s), "", vbNewLine)
Next
'輸出
Me.TextBox6.Text = ans
My.Computer.FileSystem.WriteAllText("Q1.out", ans, False)
'Q2.文字檔十進位轉4 進位:
' 請設計一個程式讀取文字檔(Q2.in,多筆),將每一列數字「十進位轉4 進位」。
' 將結果()顯示出來
' 並對應輸出到輸出檔(Q2.out)。
' 試用自定函式—Quo(n)來完成。
'輸入
Dim s As String = ""
s = My.Computer.FileSystem.ReadAllText("Q2.in")
'處理
Dim ans As String = ""
Dim row = Split(s, vbNewLine)
For i = 0 To UBound(row)
ans &= Quo(row(i)) & If(i = UBound(row), "", vbNewLine)
Next
'輸出
Me.TextBox7.Text = ans
My.Computer.FileSystem.WriteAllText("Q2.out", ans, False)
模組
Function lcm(a, b)
Return a * b / GCD(a, b)
End Function
' 用inputbox 輸入兩個正整數A 及B,求出「最大公因數」(G.C.D)。
' 試用自定函式—GCD(a, b)來完成求A 及B 之最大公因數。
'輸入
Dim a, b As Integer
a = InputBox("輸入一個正整數A", "輸入兩個正整數A 及B,求出「最大公因數」", 0)
b = InputBox("輸入一個正整數B", "輸入兩個正整數A 及B,求出「最大公因數」", 0)
'處理
Dim ans As String = ""
ans &= GCD(a, b)
'輸出
Me.TextBox8.Text = ans
模組
Function GCD(a, b)
If b = 0 Then
Return a
Else
Return GCD(b, a Mod b)
End If
End Function
'Q4 文字檔求 GCD:
' 續上題,請設計一個程式讀取文字檔(Q4.in,多筆),輸入兩個正整數 A 及 B,求出「最大公因數」(G.C.D)。
' 並對應輸出到輸出檔(Q4.out)。
'開檔
FileOpen(1, "Q4.in", OpenMode.Input)
'輸入 處理
Dim a, b As Integer
Dim ans As String = ""
Do Until EOF(1)
Input(1, a) : Input(1, b)
ans &= GCD(a, b) & If(EOF(1), "", vbNewLine)
Loop
'輸出
Me.TextBox9.Text = ans
My.Computer.FileSystem.WriteAllText("Q4.out", ans, False)
'關檔
FileClose(1)
'Q5.成績檔處理:
' 讀入學生成績檔(Q5.in,欄位:座號、國、英、數),計算所有學生的個人平均。
' 將結果顯示出來,並輸出到輸出檔(Q5.out)。
'開檔
FileOpen(1, "Q5.in", OpenMode.Input)
'輸入 處理
Dim no, ans As String
Dim ch, en, ma As Integer
Do Until EOF(1)
Input(1, no) : Input(1, ch) : Input(1, en) : Input(1, ma)
ans &= no & "," & Format((ch + en + ma) / 3, "#0.0") & If(EOF(1), "", vbNewLine)
Loop
'關檔
FileClose(1)
'輸出
Me.TextBox10.Text = ans
My.Computer.FileSystem.WriteAllText("Q5.out", ans, False)