当前位置:文档之家› VB实验教材习题答案 (1)

VB实验教材习题答案 (1)

VB实验教材习题答案 (1)
VB实验教材习题答案 (1)

第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

Print

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

Print

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

Print

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

Print

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

Print

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

Print

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

Print

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

相关主题
文本预览
相关文档 最新文档