第1章VB集成环境与VB概述一、选择题
第2章常用控件与界面设计一、选择题
第3章数据、表达式与简单程序设计一、选择题
第4章选择分支与循环
一、选择题
二、填空题
1.5 7 13 12 14 11
2. 3 1 5 3 4 1
3. right(a$,i)
4. 4
5. 6-i
6. 6 11 10 21 13 34
7. 5 14 13
8. Is else end select
9. a*(2*i-1)*(-1)*x/(2*i+2) i+1
10. 0 n-1
11. 1 t*(-1)*x^2/((2*k-1)*(2*k)) Abs(t)>eps
12. count1=count+1 count1>0
13. sum=0 sum+j st & k & “+”
14. 9 x
三、编程题
1.
Option Explicit
Private Sub Command1_Click()
Dim s As String, i As Integer, ch As String * 1
Dim a As Integer, b As Integer, c As Integer
s = Text1.Text
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If (ch >= "0" And ch <= "9") Then
a = a + 1
ElseIf (ch >= "A" And ch <= "Z") Or (ch >= "a" And ch <= "z") Then
b = b + 1
Else
c = c + 1
End If
Next
Print "数字个数"; a
Print "字符个数"; b
Print "其他字符"; c
End Sub
2.
Option Explicit
Private Sub Command1_Click()
Dim i As Integer, n As Integer
Dim a As Integer, b As Integer, c As Integer
For i = 1 To 50
n = Int(Rnd * 90 + 10)
Print n;
If i Mod 10 = 0 Then Print
If n <= 40 Then
a = a + 1
ElseIf n <= 70 Then
b = b + 1
Else
c = c + 1
End If
Next i
Print "小于等于40的个数:"; a
Print "大于40小于等于70的个数:"; b
Print "大于70的个数:"; c
End Sub
3.
Option Explicit
Private Sub Command1_Click()
Dim x As Single
Dim t As Long, n As Integer
x = 1
t = 1
n = 1
Do While 1 / t >= 0.0001
x = x + 1 / t
n = n + 1
t = t * n
Loop
Print x
End Sub
4.
Option Explicit
Private Sub Command1_Click()
Dim k As Integer, sum As Integer, i As Integer
k = InputBox("请输入一个正整数k", "输入框")
For i = 1 To Len(CStr(k))
sum = sum + Mid(k, i, 1)
Next i
MsgBox k & "的各位数字之和" & sum
End Sub
5.
Option Explicit
Private Sub Command1_Click()
Dim i As Integer, iSum As Long
For i = 1 To 20
iSum = iSum + i ^ 4
Next
Print iSum
End Sub
6.
Option Explicit
Private Sub Command1_Click()
Dim a As Integer, b As Integer
Dim sum1 As Integer, sum2 As Long
Dim i As Integer, j As Integer
For a = 2 To 3000
sum1 = 0
sum2 = 0
For i = 1 To a \ 2
If a Mod i = 0 Then sum1 = sum1 + i Next i
b = sum1
For j = 1 To b \ 2
If b Mod j = 0 Then sum2 = sum2 + j Next j
If sum2 = a And a < b Then Print a, b
Next
End Sub
7.
Private Sub Command1_Click() '打印菱形
Dim i As Integer, j As Integer
Cls
For i = 1 To 6 '打印菱形上边6行
Print Tab(20);
Print Spc(6 - i);
For j = 1 To 2 * (i - 1) + 1
If j = 1 Or j = 2 * (i - 1) + 1 Then
Print "*";
Else
Print " ";
End If
Next j
Next i
For i = 5 To 1 Step -1 '打印下半部分
Print Tab(20);
Print Spc(6 - i);
For j = 1 To 2 * (i - 1) + 1
If j = 1 Or j = 2 * (i - 1) + 1 Then
Print "*";
Else
Print " ";
End If
Next j
Next i
End Sub
8.
Option Explicit
Private Sub Command1_Click()
Dim i As Integer, j As Integer, iSum As Integer
Print "连续和为1250的正整数是:"
For i = 1 To 500
iSum = 0
For j = i To 500
iSum = iSum + j
If iSum >= 1250 Then Exit For
Next
If iSum = 1250 Then
Print i; " ~"; j
End If
Next
End Sub
9.
Option Explicit
Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer
For a = 1 To 50
For b = a To 50
For c = b To 50
If a ^ 2 + b ^ 2 = c ^ 2 Then
Print a, b, c
End If
Next c
Next b
Next a
End Sub
第5章数组一、选择题
二、填空题
1.Variant
2.ReDim A(N)
A(1)
If M < A(I) Then M = A(I)
3.Int(26 * Rnd) + 65
Chr(t)
i + 1 To 10
A(i) > A(j)
4.InStr(s, ",")
Right(s, Len(s) - n)
s
5.T – 1
I + 1
6.k = 6 - i – j
max = m
7.j = 3
j = j + 3
8.i + 1
i = i + 1
9. 2
3
7
10. 3
10
35
11.num
i + 1
a(j)=temp
三、编程题
1.
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim a(10) As Integer
Dim i As Integer, max As Integer
For i = 1 To 10
a(i) = Int(90 * Rnd) + 10
Print a(i);
Next i
i = 1
max = 0
Do While i <= 10
If a(i) Mod 3 = 0 Then
If a(i) > max Then
max = a(i)
End If
End If
i = i + 1
Loop
If max = 0 Then
Print "无要找的数"
Else
Print max & "是最大的能被3整除的数"
End If
End Sub
2.
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim A() As Integer
Dim I As Integer, m As Integer
Dim K As Integer
ReDim A(10)
Print "原数组:";
For I = 1 To 10
A(I) = I
Print A(I);
Next I
m = InputBox("????m")
K = 9 + m
ReDim Preserve A(K)
For I = 11 To K
A(I) = A(I - 10)
Next I
For I = 1 To 10
A(I) = A(I + m - 1)
Next I
Print "平移后的数组:";
For I = 1 To 10
Print A(I);
Next I
End Sub
3.
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim I As Integer, J As Integer, K As Integer
Dim a() As Integer, n As Integer, p As Integer Dim s As String, Flag As Boolean
p = 1
For K = 10 To 100
I = 1
Do While I <= 10 And Not Flag
J = 1
Do While J <= 10 And Not Flag
n = I ^ 2 + J ^ 2
If n = K Then
Flag = True
ReDim Preserve a(p)
a(p) = K
p = p + 1
s = I & Str(J) & Str(K)
List1.AddItem s
End If
J = J + 1
Loop
I = I + 1
Loop
Flag = False
Next K
End Sub
4.
Option Explicit
Private Sub Command1_Click()
Dim A(10) As Integer
Dim B(10) As Integer, S As String
Dim I As Integer, J As Integer, X As Integer
A(1) = Int(90 * Rnd) + 10
S = A(1)
For I = 2 To 10
Do
X = Int(90 * Rnd) + 10
For J = 1 To I - 1
If X = A(J) Then Exit For
Next J
If J = I Then
A(I) = X
S = S & " " & A(I)
Exit Do
End If
Loop
Next I
Text1.Text = S
B(1) = Int(90 * Rnd) + 10
S = B(1)
For I = 2 To 10
Do
X = Int(90 * Rnd) + 10
For J = 1 To I - 1
If X = B(J) Then Exit For
Next J
If J = I Then
B(I) = X
S = S & " " & B(I)
Exit Do
End If
Loop
Next I
Text2.Text = S
S = ""
For I = 1 To 10
For J = 1 To 10
If A(I) = B(J) Then
S = S & " " & A(I)
End If
Next J
Next I
If S = "" Then
Text3.Text = "没有重复"
Else
Text3.Text = S
End If
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text1.SetFocus
End Sub
5.
Option Explicit
Private Sub Command1_Click()
Dim I As Integer, J As Integer
Dim a() As Integer, K As Integer, Sum As Integer K = Val(Text1.Text)
I = 1
Do
J = K Mod 10
ReDim Preserve a(I)
a(I) = J
Sum = Sum + J
K = K \ 10
I = I + 1
Loop Until K = 0
Text2.Text = Sum
End Sub
6.
Option Explicit
Private Sub Command1_Click()
Dim a(100, 2) As Integer, K As Integer
Dim I As Integer, J As Integer
Dim M As Integer, N As Integer
K = 1
For I = 1 To 99
For J = 1 To 99
If I > J Then
M = I - J
N = I + J
If Sqr(M) = Int(Sqr(M)) And Sqr(N) = Int(Sqr(N)) Then
List1.AddItem I & " " & J
a(K, 1) = I
a(K, 2) = J
K = K + 1
End If
End If
Next J
Next I
End Sub
7.
Option Explicit
Option Base 1
Dim a(5, 5) As Integer
Private Sub Command1_Click() '生成数组并显示
Dim i As Integer, j As Integer
Picture1.Cls
Picture2.Cls
Picture3.Cls
Randomize
For i = 1 To 5
For j = 1 To 5
a(i, j) = Int(90 * Rnd) + 10
Picture1.Print a(i, j);
Next
Picture1.Print
Next
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, max As Integer
Dim b(5) As Integer, c(5) As Integer
For i = 1 To 5
max = a(i, 1)
For j = 1 To 5
If max < a(i, j) Then
max = a(i, j)
End If
b(i) = max
If max = a(i, j) Then c(i) = j
Next j
Next i
For i = 1 To 5
Picture2.Print b(i)
Picture3.Print c(i)
Next
End Sub
8.
Option Explicit
Option Base 1
Dim a(5, 5) As Integer
Private Sub Command1_Click() '生成数组并显示
Dim i As Integer, j As Integer
Picture1.Cls
Picture2.Cls
Label3.Caption = "最大值?"
Label4.Caption = "最小值?"
Randomize
For i = 1 To 5
For j = 1 To 5
a(i, j) = Int(90 * Rnd) + 10
Picture1.Print a(i, j);
Next
Picture1.Print
Next
End Sub
Private Sub Command2_Click() '交换并显示
Dim i As Integer, j As Integer, t As Integer
Dim maxi As Integer, mini As Integer, max As Integer, min As Integer max = 10: min = 99
For i = 1 To 5
For j = 1 To 5
If max < a(i, j) Then
max = a(i, j)
maxi = i
End If
If min > a(i, j) Then
min = a(i, j)
mini = i
End If
Next
Next
If maxi <> mini Then
For j = 1 To 5
t = a(maxi, j)
a(maxi, j) = a(mini, j)
a(mini, j) = t
Next j
For i = 1 To 5
For j = 1 To 5
Picture2.Print a(i, j);
Next
Picture2.Print
Next
Label3.Caption = "最大值" & max & "在第" & maxi & "行"
Label4.Caption = "最小值" & min & "在第" & mini & "行"
Else
Picture2.Print "最小值和最大值在一行"
Label3.Caption = "最大值" & max & "在第" & maxi & "行"
Label4.Caption = "最小值" & min & "在第" & mini & "行"
End If
End Sub
Private Sub Form_click()
Picture1.Cls
Picture2.Cls
Label3.Caption = ""
Label4.Caption = ""
End Sub
9.
Option Base 1
Private Sub Command1_Click()
Dim i As Integer, j As Integer, n As Integer, a() As Integer
n = InputBox("请输入一个奇数N:")
If n Mod 2 = 0 Then
MsgBox ("请重新输入奇数!")
End If
ReDim a(n, n)
For i = 1 To n
For j = 1 To n
If i = (n + 1) / 2 And j = (n + 1) / 2 Then
a(i, j) = -1
ElseIf i = j Or i + j = n + 1 Then
a(i, j) = 1
Else
a(i, j) = 0
End If
Next j
For i = 1 To n
For j = 1 To n
Print a(i, j);
Next j
Next i
End Sub
10.
Option Base 1
Dim a(10) As Integer
Private Sub Command1_Click()
Dim i As Integer
Print "生成的数组:"
Randomize
For i = 1 To 10
a(i) = Int(Rnd * 90) + 10
Print a(i);
Next
End Sub
Private Sub Command2_Click()
Dim i As Integer
x = InputBox("请输入要删除的数组元素下标:") Print "删除第" & x & "个数组元素后:"
For i = x + 1 To 10
a(i - 1) = a(i)
Next
For i = 1 To 9
Print a(i);
Next
End Sub
11.
Option Explicit
Dim a(20) As Integer, i As Integer
Private Sub Command1_Click()
Randomize
For i = 1 To 20
a(i) = Int(Rnd * 9) + 1
Text1 = Text1 & a(i) & " "
If i = 10 Then Text1 = Text1 & vbCrLf Next
Private Sub Command2_Click()
Dim j As Integer, k As Integer, b(20) As Boolean 'b(2)用来记录a(2)是否和前面的数相同,相同记为true,不再统计
For i = 1 To 20
k = 1
If b(i) = False Then '如果b(i)=False,表示a(i)没有被统计过
For j = i + 1 To 20
If a(i) = a(j) Then
k = k + 1
b(j) = True
End If
Next j
List1.AddItem a(i) & "出现次数:" & k
End If
Next
End Sub
Private Sub Command3_Click()
Text1 = ""
List1.Clear
End Sub
第6章过程
一、选择题
二、填空题
1. 6 .
2. 4 20 101
3.第一行是 6 26 、第三行是-2 98
4.第一行10 6 、第二行 5 -5
5.第一行 6 5 、第三行8 7
6.第一行11 、第二行7
7.Fun(i)
Fun=p
8.第一行 4 、第二行207
9.第一行29 、第二行28.7
10.J=k
b( ) As Integer
b( k-1) =b(k)
i
11.第一行gec 、第二行ge 、第四行 3
12.p1 = True And p2 = True 或p1 And p2
= isp(i)
Isp = True
m Mod i = 0
13.Convert(st)
Len(s)
"A" To "F"
k = k + p * h
14.isualVi
sualVisu
15.s + a
n + 1
x As Single, n As Integer 、
p * (x + i) / ((2 * i - 1) * i * x)
16.276
17.Left(s, 1)
Mid(s, i - 1, 1) = Mid(s, i, 1)
n = 1
c & CStr(n)
18.ch
temp
True
19.val(mid(s,i,j))
n as long
prime=True
20.A(2,2)的值是 6 ,A(3,1) 的值是8 ;A(4,2) 的值是 3
21.Option1(i)
X
22.10
23.第一行7 6 ,第二行16 16 ,第三行,45
24.第一行15 1 ,第二行35 3 ,第三行,50
三、改错题
1、
Option Base 1
Private Sub Command1_Click()
Dim A() As Integer, I As Integer, J As Integer, Logic As Boolean Dim K As Integer
ReDim A(1)
A(1) = 50
————————'K=1
For I = 51 To 149
K = 1 '位置错
Logic = False
Call Sub1(A, I, Logic)
If Logic Then
K = K + 1
ReDim A(K) 'ReDim Preserve A(K)
A(K) = I
End If
Next I
For I = 1 To UBound(A)
Text1 = Text1 & Str$(A(I))
If I Mod 5 = 0 Then Text1 = Text1 & vbCrLf
Next I
End Sub
Private Sub Sub1(A() As Integer, N As Integer, F As Boolean) Dim I As Integer, J As Integer, Ub As Integer
Ub = UBound(A)
For I = 1 To Ub
For J = 2 To A(I)
If A(I) Mod J = 0 And N Mod J = 0 Then
Exit For 'Exit Sub
End If
Next J
F = True
Next I
End Sub
2、
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim I As Integer, Flg As Boolean, S1 As Integer, S2 As Integer
Dim J As Integer, K As Integer, P() As Integer
ReDim P(1)
P(1) = 2
For I = 3 To 150 Step 2
For J = 2 To Sqr(I)
If I Mod J = 0 Then Exit For
Next J
If J > Sqr(I) Then
ReDim Preserve P(UBound(P) + 1)
P(UBound(P) + 1) = I 'P(UBound(P)) = I
End If
Next I
For I = 80 To 125
If fun(I, P, S1, S2) Then 'If fun(I, P, S1, S2)
Text1 = Text1 & Str$(I) & "=" & Str(S1) & "*" & Str$(S2) & vbCrLf End If
Next I
End Sub
Private Function fun(N As Integer, P() As Integer, S1 As Integer, S2 As Integer) As Boolean Dim I As Integer, J As Integer
For I = 1 To UBound(P)
For J = 1 To UBound(P) - 1
If N = P(I) * P(J) Then
S1 = P(I)
S2 = P(J)
'fun = True
Exit Function
fun = True '位置错
End If
Next J
Next I
End Function
3、
Option Explicit
Private Sub Get_Chess(Chess() As Integer, idx As Integer, Over As Integer) 'ByVal idx As Integer
Dim Ub As Integer, Counter As Integer, K As Integer
Ub = UBound(Chess)
Chess(idx) = 0
Counter = 1
K = 0 '位置错
Do Until Counter = Ub - 1
Do Until K = 2
idx = idx + 1
If idx > Ub Then idx = 1
K = K + Chess(idx)
Loop
Chess(idx) = 0
Counter = Counter + 1
Loop
For Over = 1 To Ub
If Chess(Over) <> 0 Then Exit For
Next Over
End Sub
Private Sub Command1_Click()
Dim Chess(32) As Integer, I As Integer, J As Integer
Dim K As Integer, idx As Integer
For I = 1 To 32
For J = 1 To 32
Chess(J) = 1
Next J
Call Get_Chess(Chess, I, K)
If K = 23 Then
Text1 = "从第" & Str$(I) & "号棋子开始取"
Exit For
End If
Next I
End Sub
4、
Option Explicit
Private Sub Form_Click()
Dim S As String, Flg As Boolean
Do
S = InputBox("输入一个自然数")
If S = "" Or Not IsNumeric(S) Then
MsgBox "请重新输入", 48 + vbOKOnly
Else
Exit Do
End If
Loop
judge(S, Flg) ' Call judge(S, Flg) 或judge S, Flg If Flg Then