【题目
1
】本程序的功能是:从给定的数据范围中找出所有各位数字之和为
10
的数据,若一次求得各位数字之和不是壹位数,则继续求此和数的各位数字之和。例如
47854=>28=>10
就是符合要求的数。
答:
源程序:
Private Sub Command1_Click()
Dim st As Long, se As Long, i As Long
Dim s As String
st = Text1
se = Text2
For i = st To se
If sum(i) = 10 Then
s = s & i & vbCrLf
End If
Next i
Text3 = s
End Sub
Private Function sum(ByVal n As Long) As Integer
Dim k As Integer
Do
sum = 0
Do
k = n Mod 10
sum = sum + k
n = n \ 10
Loop Until n <= 0
If sum > 10 Then
n = sum
Else
Exit Function
End If
Loop
End Function
【题目
2
】编写程序,以给定的方式标记出方阵中每一行最小元素的位置。如果某一行有多个数值相等的最小元素,也要同时标记出来。标记方式为每一行的最小元素为
0
,其他元素为
1
。
【编程要求】
1
.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界
面元素大小适中,且均可见;
2
.在文本框
1
中输入
N
值,按
“
执行
”
按钮,则随机生成一个
N
行
N
列的由两位正整数组成的
N
阶方阵,并输出到多行文本框
2
中,同时求出每一行的最小元素并生成标记矩阵输出到多行文本框
3
中;按
“
清除
”
按钮,则将
3
个文本框清空,将焦点置于文本框
1
上;按
“
退出
”
按钮,结束程序运行;
3
.程序中应定义一个求数组某一行的最小元素值的通用过程。
答:
源程序:
Private Sub Command1_Click()
Dim i As Integer, j As Integer, a() As Integer, b() As Integer
Dim x As Integer, s As String
Randomize
x = Int(Text1.Text)
ReDim a(x, x), b(x, x)
For i = 1 To x
For j = 1 To x
a(i, j) = Int(90 * Rnd) + 10
s = s & a(i, j) & " "
b(i, j) = 1
Next j
s = s & vbCrLf
Next i
Text2 = s
Call findmin(a, b)
s = ""
For i = 1 To x
For j = 1 To x
s = s & b(i, j) & " "
Next j
s = s & vbCrLf
Next i
Text3 = s
End Sub
Private Sub findmin(a() As Integer, b() As Integer)
Dim i As Integer, j As Integer, ub1 As Integer, ub2 As Integer
ub1 = UBound(a, 1): ub2 = UBound(a, 2)
For i = 1 To ub1
Min = a(i, 1)
low = 1
For j = 2 To ub2
If Min > a(i, j) Then
Min = a(i, j)
low = j
End If
Next j
b(i, low) = 0
Next i
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Text1.SetFocus
End Sub
Private Sub Command3_Click()
End
End Sub
【题目
3
】输入一个
N
位整数,求出与这个整数所包含的数字完全相同的最大
N
位整数与最小
N
位整数。
答:
源程序:
Private Sub Command1_Click()
Dim n As Long, num() As String * 1, i As Integer
Dim k As Integer, smax As String, smin As String
n = Text1
k = Len(CStr(n))
Call nsort(n, num)
For i = 1 To k
smax = smax & num(i)
If num(i) = "0" Then
smin = Left(smin, 1) & num(i) & Right(smin, Len(smin) - 1)
Else
smin = num(i) & smin
End If
Next i
Text2 = smax: Text3 = smin
End Sub
Private Sub nsort(n As Long, np() As String * 1)
Dim i As Integer, j As Integer, t As String * 1, k As Integer
Do
k = k + 1
ReDim Preserve np(k)
np(k) = CStr(n Mod 10)
n = n \ 10
If n = 0 Then Exit Do
Loop
For i = 1 To UBound(np) - 1
For j = i + 1 To UBound(np)
If np(j) > np(i) Then
t = np(j): np(j) = np(i): np(i) = t
End If
Next j
Next i
End Sub
【题目
4
】编写程序,求出给定正整数的所有质因子,并将该数表示成质因子
(
质因子均带有指数幂
)
的乘积。例如:
342=2^1*3^2*19^1
【编程要求】
1
.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界
面元素大小适中,且均可见;
2
.在文本框
1
中输入
N
值,按
“
执行
”
按钮,则开始计算并在文本框
2
中按要求的格式显示结果:按
“
清除
”
按钮,则将
2
个文本框清空,将焦点置于文本框
1
上;按
“
退出
”
按钮,结束程序运行;
3
.程序中应定义一个求一个正整数的质因子的通用过程。
答:
源程序:
Option Base 1
Private Sub Command1_Click()
Dim x As Integer
Dim num() As Integer
x = Val(Text1.Text)
Call find(x, num)
Call procedure(num, x)
End Sub
Private Sub find(x As Integer, num() As Integer)
Dim i As Integer, k As Integer
For i = 2 To x - 1
If x Mod i = 0 Then
If flag(i) Then
k = k + 1
ReDim Preserve num(k)
num(k) = i
End If
End If
Next i
End Sub
Private Function flag(ByVal n As Integer) As Boolean
Dim i As Integer
flag = False
For i = 2 To n - 1
If n Mod i = 0 Then Exit For
Next i
If i = n Then flag = True
End Function
Sub procedure(num() As Integer, n As Integer)
Dim f As Single, x As Integer, k As Integer
Dim s As String, i As Integer
For i = LBound(num) To UBound(num)
x = n
k = 0
f = x Mod num(i)
Do While f = 0
k = k + 1
x = x / num(i)
f = x Mod num(i)
Loop
s = s & CStr(num(i)) & "^" & CStr(k) & "*"
Next i
Text2 = Left(s, Len(s) - 1)
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text1.SetFocus
End Sub
Private Sub Command3_Click()
End
End Sub
【题目
5
】本程序功能是:把由字符的
ASCII
代码值对应的八进制数
(
两个八进制数之间用非数字字符分隔
)
组成的密文解密。密文以任意非数字字符结束。
答:
源程序:
Private Sub Command1_Click()
Dim s As String, i As Integer, p() As String
Dim k As Integer, t As String * 1, f As Boolean
Dim st As String
s = Text1
For i = 1 To Len(s)
t = Mid(s, i, 1)
If t <= "7" And t >= "0" Then
st = st & t
f = True
ElseIf f Then
k = k + 1
ReDim Preserve p(k)
p(k) = st
f = False
st = ""
End If
Next i
For i = 1 To UBound(p)
Text2 = Text2 & Chr(tod(p(i)))
Next i
End Sub
Private Function tod(st As String) As Integer
Dim n As Integer, k As Integer, j As Integer
n = Val(st)
Do
k = n Mod 10
tod = tod + k * 8 ^ j
n = n \ 10
j = j + 1
Loop Until n <= 0
End Function
【题目
6
】编写程序,将按给定格式
(
数据由逗号分隔,
-1
表示数据结束
)
输入到文本框的数据依次存入一个数组,再把数组中重复的数据删除,得到没有重复数的新数组。
【编程要求】
1
.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界
面元素大小适中,且均可见:
2
.在文本框
1
中输入测试数据,按
“
处理
”
按钮,则处理数据并在文本框
2
中输出没有重复数的数组数据:按
“
清除
”
按钮,则将
2
个文本框清空,将焦点置于文本框
1
上;按
“
退出
”
按钮,结束程序运行:
3
.程序中应定义一个将输入的格式数字串分解存入数组的通用过程。
答:
源程序:
Private Sub Command1_Click()
Dim s As String, a() As Integer, k As Integer
dim f As Boolean, i As Integer, st As String
s = Text1
If Right(s, 2) <> "-1" Then
MsgBox "
您没有输入
-1
表示数据结束!
"
Text1.SetFocus
Exit Sub
End If
Call sub1(s, a) 'sub1
的过程为将输入的数字串分解存入数组
A
Call Erasea(a) '
删除数组中的重复元素
For i = 1 To UBound(a)
st = st & a(i) & " "
Next i
Text2 = st
End Sub
Private Sub Erasea(a() As Integer)
Dim ub As Integer, i As Integer, j As Integer
Dim k As Integer, n As Integer
ub = UBound(a)
n = 1
Do While n < ub
i = n + 1
Do While i <= ub
If a(n) = a(i) Then
For j = i To ub - 1
a(j) = a(j + 1)
Next j
ub = ub - 1
ReDim Preserve a(ub)
Else
i = i + 1
End If
Loop
n = n + 1
Loop
End Sub
Private Sub sub1(s As String, a() As Integer)
Dim length As Integer, i As Integer, t As String
Dim f As Boolean, st As String
length = Len(s)
For i = 1 To length
t = Mid(s, i, 1)
If t <> "," Then
st = st & t: f = True
ElseIf f Then
k = k + 1
ReDim Preserve a(k)
a(k) = st
f = False
st = ""
End If
Next i
ReDim Preserve a(k - 1)
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = " "
Text1.SetFocus
End Sub
Private Sub Command3_Click()
End
End Sub
【题目
7
】生成一个
5*3
的字符数组,字符数组的第
1
、
2
列分别存放由两位随机正整数转换得到的数字字符串。设以字符
“ 0 ”
表示合数,字符
“ 1 ”
表示质数,若数组某一行的第
1
、
2
列对应得数据均为合数,则该行的第
3
列存放
“ 00 ”
;若第
1
列为质数、第
2
列为合数,则第
3
列存放
“ 10 ”
,依此类推。
答:
源程序:
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim sa(5, 3) As String, i As Integer, j As Integer
Dim s As String
For i = 1 To 2
For j = 1 To 5
sa(j, i) = Str(Int(90 * Rnd) + 10)
Next j
Next i
For i = 1 To 5
s = ""
For j = 1 To 2
s = s & np(sa(i, j))
Next j
sa(i, 3) = s
Next i
For i = 1 To 5
Picture1.Print sa(i, 1) & " " & sa(i, 2) & " " & sa(i, 3)
Next i
End Sub
Private Function np(ns As String) As String
Dim n As Integer, i As Integer
n = Val(ns)
np = "0"
For i = 2 To Sqr(n)
If n Mod i = 0 Then Exit Function
Next i
np = "1"
End Function
posted on 2006-10-09 09:36
木子李 阅读(549)
评论(0) 编辑 收藏 引用 网摘 所属分类:
Visual Basic 课堂