-
Feb
数列前
18
项<
/p>
Option Base 1
Private Sub Form_Click()
Dim
Feb(18) As Integer, I As Integer
Feb(1)
= 1
Feb(2) = 1
For I = 3 To
18
Feb(I) = Feb(I - 1) + Feb(I - 2)
Next
For I = 1 To 18
Print Feb(I),
If I Mod 5 = 0
Then Print
Next
End Sub
鞍点
Option Explicit
Option Base
1
Private Sub Form_Click()
Cls
Dim A(4, 5) As Integer,
I As Integer, J As Integer, K As Integer
Dim Max As Integer, Min As Integer
Dim Row As Integer, Col As Integer,
Flag As Boolean
Randomize
For I = 1 To 4
For J = 1 To 5
A(I, J) = Rnd * 90 + 10
Print A(I, J);
Next
Print
Next
I = 1
Flag = False
Do While I <= 4
Max = A(I, 1)
Row = I
Col = 1
For J = 2 To 5
If Max < A(I, J) Then
Max
= A(I, J)
Row = I
Col
= J
End If
Next
Min = Max
For K = 1 To 4
If Min > A(K,
Col) Then
I = I + 1
Flag = False
Exit For
End If
Next
If K = 5 Then
Flag = True
Exit Do
End If
Loop
If
Not
Flag
Then
Print <
/p>
鞍点不存在!
E
lse
Print
鞍点的位置:<
/p>
&
CStr(Row)
&
行
&
CStr(Col) &
列
End Sub
插入排序
Option Base 1
Private Sub
Command1_Click()
Dim A(10) As Integer,
I As Integer, J As Integer, X As Integer
Cls
Print
排序前:
For I = 1 To
10
A(I) = Int(100 * Rnd)
Print A(I);
Next
Print
For J = 2 To 10
X = A(J)
I = J - 1
Do While X < A(I)
A(I
+ 1) = A(I)
I = I - 1
If
I < 1 Then Exit Do
Loop
A(I + 1) = X
Next
Print
排序后:
For I = 1 To
10
Print A(I);
Next
End Sub
二分插入排序
Option Base 1
Private Sub
Command1_Click()
'
二分插入排序
Dim A(10) As Integer, I As Integer, J
As Integer, X As Integer
Cls
Print
排序前:
For I = 1 To
10
A(I) = Int(100 * Rnd)
Print A(I);
Next
Print
Dim First As Integer,
Last As Integer, Middle As Integer
Dim K As Integer
For J = 2
To 10
X = A(J)
First = 1
Last = J - 1
Do While First <= Last
Middle = (First + Last) / 2
If
X > A(Middle) Then
Last = Middle -
1
Else
First = Middle
+ 1
End If
Loop
For K = J - 1
To Middle Step -1
A(K + 1) = A(K)
Next
A(Middle) = X
Next
Print
排序后:
For I = 1 To
10
Print A(I);
Next
End Sub
插入一个数到有序数列
Dim
A(10) As Integer, I As Integer, J As Integer
Private Sub
Command1_Click()
Dim X As Integer
X =
I = 9
Do
While X < A(I)
A(I + 1) = A(I)
I =
I - 1
Loop
A(I + 1) = X
Print
插入数后:
For I = 0 To
10
Print A(I);
Next
Print
End Sub
Private Sub Command2_Click()
Dim temp As Integer
Cls
For I = 0 To 9
A(I) = Int(100
* Rnd)
Next
For I = 0 To 8
For J = I + 1 To 9
If
A(I) > A(J) Then
temp = A(I)
A(I) = A(J)
A(J) = temp
End If
Next
Next
Print
有序序列:
For I = 0 To
9
Print A(I);
Next
Print
us
End Sub
Private Sub Form_Activate()
Print
将一个数插入到一个有序的序列中!
End Sub
查找子串位置
Option
Base 1
Private Sub
Command1_Click()
Dim S1 As String, S2
As String
S1 =
S2 =
= Index(S1, S2)
End Sub
Public
Function Index(S As String, T As String) As
Integer
Dim I As Integer, J As Integer
Dim LenS As Integer, LenT As Integer
LenS = LenB(S)
LenT =
LenB(T)
I = 1: J = 1
Do
While I <= LenS And J <= LenT
If
MidB(S, I, 1) = MidB(T, J, 1) Then
I =
I + 1
J = J + 1
Else
I = I - J + 2
J = 1
End If
Loop
If J > LenT Then Index
= I - LenT Else Index = 0
End Function
自动出题
Option
Explicit
Public A As Integer, B As
Integer, Opt As String
Public Correct
As Integer, Wrong As Integer
Private Sub Command1_Click()
Randomize
Dim C As Integer
=
A = Int(10 * Rnd) + 1
B = Int(10 * Rnd) + 1
C =
Int(4 * Rnd)
Select Case C
Case 0: Opt =
Case 1: Opt =
Case 2: Opt =
Case 3: Opt =
End Select
n = A
n = Opt
n = B
e =
True
e = True
us
End Sub
Private
Sub Command2_Click()
Dim Result As
Integer
Select Case Opt
Case
Case
Case
Case
End Select
If Result = Val()
Then
MsgBox
很好,你做对了
!
A
& Opt & B &
V
Correct = Correct + 1
Else
MsgBox
好可惜,你错了!
A
& Opt & B &
X
Wrong = Wrong + 1
End If
End Sub
Private Sub Command3_Click()
MsgBox (
你做对了
题,做错了
题
End Sub
Private Sub
Form_Activate()
us
e = False
e = False
End
Sub
打印
ASIIC
码
Private
Sub Form_Click()
Dim I As Integer, N As
Integer
N = 1
For I = 32 To
126
Print I;
If
N = 5 Then
N = 1
Print
Else
N = N + 1
End If
Next
End
Sub
递归法
< br>Feb
数列前
10
项
Private Sub Form_Click()
Dim I As Integer
For I = 1
To 10
Print Feb(I)
Next
End Sub
Private Function Feb(ByVal
N As Integer) As Integer
If N = 1 Then
Feb = 0
ElseIf N = 2 Then
Feb = 1
Else
Feb
= Feb(N - 1) + Feb(N - 2)
End If
End
Function
递归法逆转输出字符串
Private Sub Form_Click()
Dim
S As String
S =
InputBox(
Invert S
End Sub
Public Sub Invert(ByVal S
As String)
Dim N As Integer
N = Len(S)
If N = 0 Then
Exit Sub
Else
Print Mid(S, N, 1);
S =
Mid(S, 1, N - 1)
Invert S
End If
End Sub
递归法求最大公约数
Private Sub Form_Click()
Dim
M As Integer, N As Integer
M =
InputBox(
N = InputBox(
Print
M; N;
的最大公约数为:
End Sub
Public
Function Gcd(ByVal M As Integer, ByVal N As
Integer) As Integer
Dim R As Integer
R = M Mod N
If R = 0 Then
Gcd = N
Else
M =
N
N = R
Gcd = Gcd(M, N)
End If
End
Function
计算两个矩阵的积
Option
Base 1
Private Sub
Form_Click()
Dim A(3, 4) As Integer,
B(4, 3) As Integer, C(3, 3) As Integer
Dim I As Integer, J As Integer, K As
Integer
Print
矩阵
A
为:
For I = 1 To 3
For J = 1 To 4
A(I, J) = 5 *
Rnd
Print A(I, J),
Next
Print
Next
Print
矩阵
B
为:
For I =
1 To 4
For J = 1 To 3
B(I, J) = 5 * Rnd
Print B(I, J),
Next
Print
Next
Print
矩阵
C
为:
<
/p>
For I = 1 To 3
For J = 1 To 3
C(I, J) = 0
For K = 1 To 4
C(I, J) = C(I, J) + A(I, K) * B(K, J)
Next
Print C(I, J),
Next
Print
Next
End Sub
冒泡法排序
Option Base 1
Private Sub
Form_Click()
Dim A(10) As Integer, I As
Integer, J As Integer, Temp As Integer
For I = 1 To 10
A(I) = Int(90 *
Rnd) + 10
Print A(I);
Next
Print
For I = 9 To 1 Step -1
For J = 1 To I
If A(J) > A(J +
1) Then
Temp = A(J)
A(J) = A(J + 1)
A(J + 1) = Temp
End If
Next
Next
For I = 1 To 10
Print A(I);
Next
End Sub
逆序输出字符串
Private
Sub Form_Click()
Dim C As String, I As
Integer
C = InputBox(
请输入一个字符
串
Print C
For I =
1 To Len(C)
Print Mid(C, Len(C) - I +
1, 1);
Next
Print
End Sub
牛顿迭代法
Private Sub
Command1_Click()
Dim x As Single, x1 As
Single, Eps As Single
x = InputBox(
输入
X
的初始值
牛顿迭代法
Eps = InputBox(
输入允许的误差
牛顿迭代法
Do
x1 = x
x = x1 - (x1 * Exp(x1) - 1) / (Exp(x1)
* (x1 + 1))
Loop Until Abs(x - x1) <=
Eps
= Str(x)
End Sub
求定积分
Private Sub
Form_Click()
Dim A As Single, B As
Single, N As Long
Dim S As Double, H As
Double, I As Long
N =
InputBox(
A = 0
B = 1
H = (B - A) / N
S = 0
For I = 0 To N
S = S + (A + I
* H) * H
Next
Print S
End Sub
求组合数
Private Sub
Form_Click()
Dim M As Integer, N As
Integer
M = InputBox(
N =
InputBox(
Print Fact(M) / (Fact(N) *
Fact(M - N))
End Sub
Public Function Fact(N As
Integer) As Long
Dim I As
Integer
Fact = 1
For
I = 1 To N
Fact = Fact * I
Next
End
Function
人口增长
Private Sub Command1_Click()
Dim X As Single, n As Long
X
= Val()
n = 0
Do Until X >=
20
X = X * (1 + 0.01)
n =
n + 1
Loop
= n
End Sub
筛选法排序
Option Base
1
Private Sub Form_Click()
Dim A(10) As Integer, I As Integer, J
As Integer, Temp As Integer
Print
排序前:
For I = 1 To
10
A(I) = Int(90 * Rnd) + 10
Print A(I);
Next
Print
For I = 1 To 9
For J = I + 1 To 10
If
A(I) > A(J) Then
Temp = A(I)
A(I) = A(J)
A(J) = Temp
End If
Next J
Next I
Print
排序后:
For I = 1 To
10
Print A(I);
Next
Print
End Sub
删除数列中重复的数
Option
Base 1
Private Sub Form_Click()
Dim A() As Integer, I As Integer, N As
Integer
Dim J As Integer, K As Integer,
Ub As Integer
Randomize
ReDim A(10)
Cls
For I = 1 To 10
A(I) = Rnd * 90
+ 10
Print A(I);
Next
Print
Ub = UBound(A)
I = 1
Do While I <= Ub - 1
J = I + 1
Do While J <=
Ub
If A(I) = A(J) Then
For
K = J To Ub - 1
A(K) = A(K + 1)
Next
Ub = Ub - 1
ReDim Preserve A(Ub)
Else