2017年3月20日 星期一

Z2AY7M3 練習-4 (17題題單及參考)

4/10(一)測驗題單 (題目名加上連結的表示範例完成)
假設由文字方塊輸入,呼叫 Function MyPxx( S As String ) As String後傳回要輸出的字串
以下只有M5P11附主程式部份,其餘類似

105模擬
M5P11
105模擬
M5P22
105模擬
M5P42
105正式
F5P11
字串問題:計算字數
105正式
F5P12
字串問題:摩斯電碼
105正式
F5P21
數學問題:網段ID
105正式
F5P22
數學問題:最大公約數計算
104模擬
M4P12
數學問題:N!尾數的0
104模擬
M4P21
其他:計程車費率計算
104模擬
M4P42
其他:數字反轉後相加
104正式
F4P11
生活問題:電梯電費計算系統
104正式
F4P22
數學問題:最大公約數計算
104正式
F4P31
其他:計算位元為1的個數
103模擬
M3P11
數學問題:判斷是否為質數
103模擬
M3P12
數學問題:解二元一次聯立方程式之根
103模擬
M3P21
103模擬
M3P22
編碼處理:凱撒密碼

======  105模擬 M5P11 數學問題:質數
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim s As String = TextBox1.Text
        Label1.Text = M5P11(s)
    End Sub
    Function M5P11(ByVal s As String) As String
        '傳入一個 字串s 轉為整數 x ,判斷是否為質數,是傳回字串T,否傳回F
        Dim x As Integer = s
        If x < 2 Then Return "F"
        For k = 2 To Math.Sqrt(x)
            If x Mod k = 0 Then Return "F"
        Next
        Return "T"
    End Function
=====輸入範例
1
2
3
4
5

6
7
8

=====輸出範例
F
T
T
F
T

F
T
F
===============

======   ' 105模擬 P22:行、字數、字元數

      Function M5P22(ByVal s As String) As String
        '原檔案輸入 傳入一個整數 fn 為要讀入的 檔案編號
      '改為由文字方塊讀入
        Dim a, b, c As Integer
        Dim line() = s.Split(vbCrLf)
        a = line.Length
        For i = 0 To UBound(line)
            c += line(i).Length
            Dim dat() = line(i).Split(" ")
            b += dat.Length
        Next
        ' 由 multiline的文字方塊讀入 每列有 Enter會多1字,除了最後一列不按 Enter
        c -= (a - 1)
        Return a & "," & b & "," & c
=====輸入範例
a
b
c
cd

=====輸出範例
4,4,5
===============

======  105模擬 M5P42 十進制數轉成二進制數
     Function M5P42(ByVal s As String) As String
        Dim dat() = s.Split(",")
        Dim a As Integer = StrReverse(dat(0))
        Dim b As Integer = StrReverse(dat(1))
        Dim sum As Integer = StrReverse((a + b) & "")
        Return d2b(sum)   ' 呼叫自訂函式d2b將十進位轉二進位
    End Function

    Function d2b(ByVal sum As Integer) As String
     '將傳入的十進位數值 sum 傳為二進位後傳回 字串
        d2b = ""
        If sum = 0 Then Return "0"
        Do Until sum = 0
            d2b = sum Mod 2 & d2b
            sum \= 2
        Loop
    End Function


=====輸入範例
1,13
123,14

172,93
100,2
=====輸出範例
10111
100000111

1101
11
===============

 ======  103模擬 M3P21 編碼處理:摩斯電碼

 REM tbl陣列: 第1列 A~G  , 第2列 H~M  , 第3列 N~T  , 第4列 U~Z 
    Dim tbl() = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
               "....", "..", ".---", "-.-", ".-..", "--",
               "-.", "---", ".--.", "--.-", ".-.", "...", "-",
              "..-", "...-", ".--", "-..-", "-.--", "--.."}
    Function M3P21(ByVal s As String) As String
        Dim ans As String = ""
        Dim d() = s.Split(" ")
        For j = 0 To UBound(d)
            Dim k = Array.IndexOf(tbl, d(j))  '由tbl找 符合d(j) 的字串,傳回索引
            ans &= Chr(k + 65)  '索引為 0A,1B,...,24Y,25Z : 加上65即為 65~90
        Next
        Return ans
    End Function
=====輸入範例
... --- ...

-.-- --- ..-

.- -. -..

..

.... . .-.. .--.

.--. .-. --- --. .-. .- --

...- .. .-. - ..- .- .-.. -... .- ... .. -.-.

--. --- --- --. .-.. .

=====輸出範例
SOS
YOU
AND
I
HELP
PROGRAM
VIRTUALBASIC
GOOGLE
===============





0 意見:

張貼留言