<h1>電腦軟體設計丙級(Visual Basic)</h1> --- <h2>第一套題組</h2> 共同科目: (1)建立VB Windows Form App (.net framework)專案 (2)拉出表單物件 包含四個buttom 三個textbox(開啟multiline) (3)在Private Sub ButtonX_Click(已省略)<font color=red>下方</font>新增`Dim m1,m2,m3,m4,m5` (4)在Private Sub ButtonX_Click(已省略)<font color=red>上方</font>新增以下三行 X為題號 ``` ' ****************************** ' * 11900-106030X Program Start * ' ****************************** ``` (5)依照指定題目開始答題 (6)報表列印 <h3>第一套第一題1060301</h3> 簡介:第一套第一題為<font color=red>迴文判斷</font>,應檢人應讀取測試檔,將其判讀是否為迴文後以下方格式輸出 ```bash= 以範例檔1060301.SM內的資料 12321 為例 是迴文 第一題結果:12321 is a palindrome. 不是迴文 第一題結果:12321 is not a palindrome. ``` 解題邏輯: (1)把資料存到m0 ```bash= FileOpen(1,"C://test//1060301.SM",OpenMode.Input) Input(1,m0) FileClose(1) ``` (2)`m1=m0` (3)迴圈計數器 ```bash= For i=1 to 9 ``` ```bash= DO WHILE TRUE LOOP ``` ```bash= DO LOOP WHILE TRUE ``` (4)運算 ```bash= m2 = m1 \ 10 m3 = m1 Mod 10 m4 = m4 & m3 If m2 = 0 Then Exit For(DO) Else m1 = m2 End If ``` (5)輸出 ```bash= If m0 = m4 Then TextBoxX.Text = "第一題結果:" & m0 & " is a palindrome." Else TextBoxX.Text = "第一題結果:" & m0 & " is not a palindrome." End If ``` <h3>第一套第二題1060302</h3> 簡介:第一套第二題為<font color=red>直角三角形列印</font>,應檢人應讀取測試檔,將其運算出結果後以下方格式輸出 ```bash= 以範例檔1060302.SM內的資料 7 為例 第二題結果: 1 12 123 1234 12345 123456 1234567 ``` 解題邏輯: (1)把資料存到m0 ```bash= FileOpen(1,"C://test//1060302.SM",OpenMode.Input) Input(1,m0) FileClose(1) ``` (2)建立迴圈 FOR LOOP ```bash= For i=1 To m0 For j=1 to i m1=m1 & j Next m1=m1 & vbNewLine Next ``` DO WHILE ... LOOP ```bash= int i=1 Do While i<=m0 int j=1 Do While j<=i m1=m1 & j j=j+1 Loop m1=m1 & vbNewLine i=i+1 Loop ``` DO LOOP ... WHILE ```bash= int i=1 Do Loop int j=1 Do Loop m1=m1 & j j=j+1 While j<=i m1=m1 & vbNewLine i=i+1 While i<=m0 ``` (3)輸出 ` textBoxX.Text="第二題結果:" & vbNewLine & m1` <h3>第一套第三題1060303</h3> 簡介:第一套第三題為<font color=red>質數計算</font>,應檢人應讀取測試檔,將其判讀是否為質數後以下方格式輸出 ```bash= 以範例檔1060303.SM內的資料 12 為例 第三題結果:12 is not a prime number. ``` 解題邏輯: (1)把範例檔存到m0 ```bash= FileOpen(1,"C://test//1060303.SM",OpenMode.Input) Input(1,m0) FileClose(1) ``` (2)建立迴圈 FOR LOOP ```bash= For i=1 To m0 If m0 Mod i=0 Then m1=m1+1 Next ``` DO WHILE ... LOOP ```bash= int i=1 Do While i<=m0 If m0 Mod i=0 Then m1=m1+1 i=i+1 Loop ``` DO LOOP ... WHILE ```bash= int i=1 Do Loop If m0 Mod i=0 Then m1=m1+1 i=i+1 While i<=m0 ``` (3)判斷是否為質數並輸出 ```bash If m1=2 Then textBoxX.Text="第三題結果" & m0 & " is a prime number." Else textBoxX.Text="第三題結果" & m0 & " is not a prime number." End If ``` <h3>第一套第四題1060304</h3> 簡介:第一套第四題為<font color=red>體質指數BMI</font>,應檢人應讀取測試檔,計算並找出最小BMI值,將其四捨五入後以下方格式輸出 ```bash= 以範例檔1060304.SM內的資料 170,45 165,50 170,55 為例 第四題結果:最小BMI值=15,不正常 ``` 解題邏輯: (1)建立3個陣列 h(3) w(3) bmi(3) 及s_bmi (2)把範例檔的三組資料存進陣列 ```bash= FileOpen(1,"D://test//1060304.SM",OpenMode.Input) For i=1 to 3 Input(1,h(i)):Input(1,w(i)) bmi(i)=w(i)/((h(i)/100)*(h(i)/100)) Next s_bmi=bmi(1) FileClose(1) ``` (3)找出最小BMI值 ```bash= For i=1 To 3 If bmi(i)<s_bmi Then s_bmi=bmi(i) Next ``` (4)四捨五入 ```bash= Dim s_bmi45 As Integer If s_bmi Mod 10=0.5 Then s_bmi=s_bmi+0.5 s_bmi45=s_bmi ``` (5)判斷及輸出 ```bash= If s_bmi45 >=20 And s_bmi45<=25 Then textBoxX.Text="第四題結果:最小BMI值=" & s_bmi45 &",正常" Else textBoxX.Text="第四題結果:最小BMI值=" & s_bmi45 &",不正常" End If ``` <h3>第一套第五題1060305</h3> 簡介:第一套第五題為<font color=red>矩陣相加</font>,應檢人應讀取測試檔,將其計算後以下方格式輸出 ```bash= 以範例檔1060305.SM內的資料 1,2 3,4 5,6 7,8 為例 第五題結果: [6 8] [10 12] ``` 解題邏輯: (1)定義三個陣列 `a(2,2) b(2,2) c(2,2)` (2)讀入資料 ```bash= Input(1,a(1,1)) : Input(1,a(1,2)) Input(1,a(2,1)) : Input(1,a(2,2)) Input(1,b(1,1)) : Input(1,b(1,2)) Input(1,b(2,1)) : Input(1,b(2,2)) ``` (3)運用兩個迴圈進行運算 FOR LOOP ``` bash For i = 1 To 2 For j = 1 To 2 c(i, j) = a(i, j) + b(i, j) Next Next ``` DO WHILE ... LOOP ```bash= Dim i = 1 Do While i <= 2 Dim j = 1 Do While j <= 2 c(i, j) = a(i, j) + b(i, j) j = j + 1 Loop i = i + 1 Loop ``` DO LOOP ... WHILE ```bash= Dim i = 1 Do Dim j = 1 Do c(i, j) = a(i, j) + b(i, j) j = j + 1 Loop While j <= 2 i = i + 1 Loop While i <= 2 ``` (4)輸出 ```bash= Dim m1 = "[" & c(1,1) & " " & c(1,2) & "]" &vbNewLine m1 =m1+ "[" & c(2,1) & " " & c(2,2) & "]" &vbNewLine TextBoxX.Text="第五題結果:" & vbNewLine & m1 ``` <h3>報表列印</h3> (1)在Form上新增PrintDocument (2)對列印按鈕點兩下,輸入`Call PrintDocument1.print()` (3)在Form上對PrintDocument1點兩下,輸入 ```bash= Dim vn=vbNewLine Dim m1="姓名:[黃子瑋] 術科測試編號:[0919105002]"& vn m1=m1+"座號:[19] 日期:[2020/09/19]"& vn &vn m1=m1+TextBoxX.Text &vn &vn m1=m1+TextBoxX.Text &vn &vn m1=m1+TextBoxX.Text &vn &vn e.Graphic.DrawString(m1,TextBoxX.Text,Brushes.Black,100,100) ``` <h2>第二套題組</h2> {%hackmd B1pEdkJHP %} {%hackmd HJnPGy74D %} {%hackmd Hk4ifym4w %} ###### tags: `電腦軟體設計丙級(Visual Basic)`