VB程序设计练习题(2022年新)
目錄
前言
一、數組元素互換。
?二、同構數
三、成績排名
?四、興趣愛好
五、 矩陣元素最高頻率
六、sin與cos值
七、(進階)旋轉表
八、找小于給定素數最大的三個素數
九、求數列前n項
十、 紅綠燈
總結:
前言
寒假到了,做了我之前發題的后,想必自己的水平也高了不少了吧,這邊繼續發布我之前練過VB練習題給大家練練。難度較大。
一、數組元素互換。
? 某數組有20個元素,元素的值由鍵盤輸入,要求將第1個元素與第20個元素互換,第2個元素與第19個元素互換......第10個元素與第11個元素互換。輸入數組原來各元素的值和對換后各元素的值。程序界面如下圖。
答案:
Dim a(1 To 20)
Private Sub Command1_Click()
s = 0
For i = 1 To 20
??? s = s + 1
??? a(i) = Val(InputBox("輸入元素"))
??? Label1.Caption = Label1.Caption & a(i)
??????? If i >= 1 And i <= 19 Then
??????????? Label1.Caption = Label1.Caption & ","
??????? End If
If s = 10 Then
??? Label1.Caption = Label1.Caption & vbCrLf
??? s = 0
End If
Next
End Sub
Private Sub Command2_Click()
For i = 1 To 10
??? For j = 20 To 11 Step -1
??????? If i + j = 21 Then
??????????? t = a(i)
??????????? a(i) = a(j)
??????????? a(j) = t
??????? End If
??? Next
Next
For i = 1 To 20
s = s + 1
??? Label2.Caption = Label2.Caption & a(i)
??? If i >= 1 And i <= 19 Then
??????? Label2.Caption = Label2.Caption & ","??
??? End If
? If s = 10 Then
? Label2.Caption = Label2.Caption & vbCrLf
? s = 0
? End If
Next
End Sub
?二、同構數
? ? ? ? ?編寫一個查找介于整數A,B之間所有同構數的程序。若一個數出現在自己平方數的右端,則稱此數為同構數。如5在52=25的右端,25在252=625的右端,故5和25為同構數。
答案:
Private Sub Command1_Click()
Dim a As Long, b As Long
Dim c As Long
a = Val(Text1.Text)
b = Val(Text2.Text)
c = b ^ 2
d = a ^ 2
If a > 0 And b > 0 And b > a Then
??? For i = a To b
??????? For j = 1 To Len(c)
??????????? If i ^ 2 Mod 10 ^ j = i Then
??????????????? List1.AddItem i & "^2" & "=" & i ^ 2
??????????????? Exit For
??????????? End If
??????? Next
??? Next
End If
If a > 0 And b > 0 And a > b Then
??? For i = b To a
??????? For j = 1 To Len(d)
??????????? If i ^ 2 Mod 10 ^ j = i Then
??????????????? List1.AddItem i & "^2" & "=" & i ^ 2
??????????????? Exit For
??????????? End If
??????? Next
??? Next
End If
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
End Sub
Private Sub Command3_Click()
End
End Sub
三、成績排名
? ? ? ? 點擊窗體利用隨機數輸出以下圖案,并且排序,算出總分。
答案:
Private Sub Form_Click()
Dim a(1 To 10, 1 To 3)
Dim b(1 To 10)
Dim s As String
Dim t As String
Form1.Cls
Randomize
Sum = 0
Print "成績 1?? 成績 2?? 成績 3?? 總分?? 名次"
For i = 1 To 10
??? For j = 1 To 3
??????? a(i, j) = Int(Rnd * (99 - 50 + 1) + 50)
??????? Sum = Sum + a(i, j)
??????? s = s & a(i, j) & Space(7)
??? Next
??? b(i) = Space(1) & s & Sum
??? s = ""
??? Sum = 0
Next
For i = 1 To 10
??? For j = 1 + i To 10
??????? If Right(b(i), 3) < Right(b(j), 3) Then
??????????? t = b(i)
??????????? b(i) = b(j)
??????????? b(j) = t
??????? End If
??? Next
??? Print b(i) & Space(5) & i
Next
End Sub
?四、興趣愛好
????????設計如圖所示界面,窗體上有兩個標簽,1 個文本框,1 個列表框和三個命令按鈕。程序運行時,在文本框中輸入文本,單擊“添加”按鈕,文本添加到列表框中,如果列表框中有相同的文本,則不再添加。單擊“刪除”按鈕,選中的列表項從列表框中移去。單擊“清除”按鈕,文本框和列表框中內容清空。?
答案:
Private Sub Command1_Click()
Dim i As Integer
Dim f As Boolean
f = False
For i = 0 To List1.ListCount - 1
If List1.List(i) = Text1.Text Then?
??????? f = True?????????????????? ??
??????? Exit For
??? Else
??????? f = False
??? End If
Next
If f = False Then
??? List1.AddItem Text1.Text
End If
End Sub
Private Sub Command2_Click()
List1.RemoveItem List1.ListIndex
End Sub
Private Sub Command3_Click()
List1.Clear
Text1.Text = ""
End Sub
五、 矩陣元素最高頻率
????????安裝如下布局擺放控件,單擊command1時text1中生成4*5的0~9隨機數的矩陣,點擊統計按鈕,則在text2中統計出出現頻率最多的數和在text3中顯示出現最多的次數。點擊退出,則退出程序。
?答案:
Dim a(1 To 4, 1 To 5) As Integer
Private Sub Command1_Click()
Text1.Text = ""
Randomize
For i = 1 To 4
??? For j = 1 To 5
??????? a(i, j) = Int(Rnd * (9 - 0 + 1) + 0)
??????? Text1.Text = Text1.Text & a(i, j) & "? "
??? Next
??? Text1.Text = Text1.Text & vbCrLf
Next
End Sub
Private Sub Command2_Click()
Text2.Text = ""
Text3.Text = ""
Dim b(0 To 9)
For i = 1 To 4
??? For j = 1 To 5
??????? For n = 0 To 9???????????????????????????????????????????????????????????????
??????????? If a(i, j) = n Then????????????????????????????????????????????????? ??這邊這是定義了一個b數組計入產
??????????????? b(n) = b(n) & n ????????????????????????????????????????? ????????生的數,b的長度就是次數,
??????????? End If???????????????????????????????????????????????????????????????????? 思路2:b(n)=b(n)+1來判斷最大值
??????? Next???????????????????????????????????????????????????????????????????????????如何次數跟值都有
??? Next
Next
For n = 0 To 9
??? If Len(b(n)) > Max Then
??????? Max = Len(b(n))?????????????????????????? ??????????????????????????????找出b數組中長度最長的數,也就是
??? End If?????????????????????????????????????????????????????????????????????????????次數最多的數。,
Next
For n = 0 To 9
??? If Len(b(n)) = Max Then
??????? Text2.Text = Text2.Text & n & " "??????????????????????????????? 在text2中顯示
??????? Text3.Text = Len(b(n))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??在text3中顯示次數(也就是長度)
??? End If
Next
End Sub
Private Sub Command3_Click()
End
End Sub
六、sin與cos值
????????要求:①利用屬性窗口設置適當的屬性,使 txtInput、txtResult中數據右對齊:②請編寫適當的程序完成以下功能:在 txtInput中輸入40(度數),選擇一個單選按鈕,單擊“計算”按鈕,則根據所選擇的單選按鈕,計算出相應的正弦、余弦值(保留3位小數,第4位截去,pi取3.14159),并顯示在 txtResult中。
答案:
Const pi = 3.14159
Private Sub Command1_Click()
a = Val(txtInput.Text)
If Option1.Value = True Then
??? txtResult.Text = Format(Sin(a * pi / 180) - 0.0005, "0.000")? ? ? ??‘a*pi/180為固定公式
End If
If Option2.Value = True Then
? ?txtResult.Text = Format(Cos(a * pi / 180) - 0.0005, "0.000")? ? ? ? ‘-0.0005可以使值不會四舍五入
End If
End Sub
七、(進階)旋轉表
????????如下圖布置界面,點擊“開始”按鈕線每一秒順時針轉動6°
答案:
Dim lenth As Integer, q As Integer
Const pi = 3.14159
Private Sub cmdStart_Click()
tmrClock.Enabled = True
End Sub
Private Sub cmdStop_Click()
tmrClock.Enabled = False
End Sub
Private Sub Form_Load()
??? lenth = LinClock.Y2 - LinClock.Y1
??? q = 90
End Sub
Private Sub tmrClock_Timer()
q = q + 6
??? LinClock.Y1 = LinClock.Y2 - lenth * Sin(q * pi / 180)
??? LinClock.X1 = LinClock.X2 - lenth * Cos(q * pi / 180)
End Sub
八、找小于給定素數最大的三個素數
? ? 設計如圖所示界面,程序運行時,?在文本框中輸入一個素數,然后單擊“查找”命令按鈕,找出小于給定素數的三個最大的素數,并顯示在標簽控件數組 lblResult 中,如圖所示。
答案:
Private Sub Command1_Click()
Dim f As Boolean
Dim n As Boolean
Dim i As Long, j As Long, s As Long
a = Val(Text1.Text)
f = False
n = False
s = 0
For i = 2 To a - 1
??? If a Mod i = 0 Then
??????? MsgBox "請輸入素數"
??????? f = False
??????? Exit For
??? Else
??????? f = True
??? End If
Next i
If f = True Then
??? For i = a - 1 To 2 Step -1
??????? n = False
??????? For j = 2 To i – 1 ???? ????????????????????????????????????????????????????????‘注意是i-1,不是a-1
??????????? If i Mod j = 0 Then
????????????? ??n = True
??????????????? Exit For
??????????? Else
??????????????? n = False
??????????? End If
??????? Next j
??????? If n = False Then
??????????????? Label3(s).Caption = i
??????????? s = s + 1
??????? End If
??????? If s = 3 Then
??????????? Exit For
??????? End If
??? Next i
End If
End Sub
九、求數列前n項
????????設計如圖所示界面,其功能是產生并顯示一個數列的前n項。數列產生的規律是:數列的前2項是小于10的正整數,將此兩數相乘,若乘積<10,則以此乘積作為數列的第3項;若乘積>=10,則以乘積的十位數為數列的第3項,以乘積的個位數為數列的第4項。再用數列的最后2項相乘,用上述規則形成后面的項,直至產生了第n項。如圖所示。
?答案:
Private Sub Command1_Click()
Dim n()
Dim chen As Integer
Dim a As Integer, b As Integer, c As Integer
Text4.Text = ""
a = Text1.Text
a = Val(a)
b = Text2.Text
b = Val(b)
c = Text3.Text
c = Val(c)
ReDim n(1 To c)
n(1) = a
n(2) = b
For i = 3 To c
??? chen = n(i - 1) * n(i - 2)
??? If chen >= 10 Then
??????? n(i) = chen \ 10
??????? If i < c Then ??????????????’注意一定要小于c的時候,才能再輸出個位的數加入數組當中,不然就? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 會超出數組范圍
??????????? n(i + 1) = chen Mod 10
??????????? i = i + 1
??????? End If
??? Else
??????? n(i) = chen
??? End If
Next
For i = 1 To c
??? Text4.Text = Text4.Text & n(i) & " "
Next
End Sub
十、 紅綠燈
????????按照以下窗體搭建界面,使得shape1顏色紅綠交替,兩個水平滾動條控制時間1到10秒,點擊開始按鈕則shape1依照對應顏色滾動條時間,維持顏色的保留時間,只用到一個時鐘控件。
答案:
???????? 時鐘的Interval屬性值設置為1000(也就是1秒)
Dim green, red???????????????????????????????????????????????????????????? ‘定義兩個變量,對應兩個滾動條的值
Private Sub Command1_Click()
Timer1.Enabled = True
green = HScroll2.Value??????????????????????????????????????????????? ‘對應
red = HScroll1.Value??????????????????????????????????????????????????? ‘對應
End Sub
Private Sub Form_Load()
Shape1.BackColor = vbRed??????????????????????????????????????? ‘shape1的初始顏色為紅色
End Sub
Private Sub Timer1_Timer()
If Shape1.BackColor = vbRed Then??????????????????????????‘當為紅色時,所對應的變量red每秒-1。
??? red = red – 1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
??? If red = 0 Then???????????????????????????????????????????????????? ???‘如果變量red的值為0時,則shape1
??????? Shape1.BackColor = vbGreen?????????????????????????? 的背景顏色變為綠色。(比如現在red
End If??????????????????????????????????????????????????????????????????????????為3,每秒-1,說明3秒后為0,也就
???????????????????????????????????????????????????????????????????????????????????說shape1的背景也是可以維持3秒紅色。
?????????????????????????????????????????????????????????????????????????????? ?? ?而red的值又正好是水平滾動條的值。
ElseIf Shape1.BackColor = vbGreen Then??????????????? ‘同理。
??? green = green - 1
??? If green = 0 Then
??????? Shape1.BackColor = vbRed
??? End If
End If
If red = 0 Then? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?‘當red的值到0時,一定要復原,green一樣
??? red = HScroll1.Value
End If
If green = 0 Then
??? green = HScroll2.Value
End If
End Sub
總結:
????????vb刷到這里,水平完全可以在技能考vb上那滿分了,注意一些細節,后期會專門發一篇做vb題的細節。加油!對了,要多花時間在服務器配置上(Windows Server 2008 R2)上。
總結
以上是生活随笔為你收集整理的VB程序设计练习题(2022年新)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 判斷數據庫表是否存在,phpl判
- 下一篇: html加注算法源码,200种加密算法(