'**********FOUND**********
Private Sub prime_f(ByVal n As Integer, a() As Integer) Dim i As Integer, k As Integer i = 2 Do
If n Mod i = 0 Then k = k + 1
ReDim Preserve a(k) a(k) = i n = n \\ i Else
i = i + 1 End If
'**********FOUND********** Loop Until n <= 1 End Sub
第4题
'[题目]本程序的功能是:查找800-1200范围内的所'有具有两个相同数字的素数。
'例如811、877等都是符合要求的数据。 Option Explicit
Private Sub Command1_Click() Dim i As Integer For i = 800 To 1200
If validate(i) And prime(i) Then List1.AddItem i End If Next i End Sub
'**********FOUND**********
Private Function validate(n As Integer) As Boolean Dim num() As Integer, k As Integer Dim i As Integer, j As Integer Do
k = k + 1
'**********FOUND********** ReDim preserve num(k) num(k) = n Mod 10 n = n \\ 10 Loop Until n <= 0 k = 0
For i = 1 To UBound(num) - 1 For j = i + 1 To UBound(num)
If num(i) = num(j) Then k = k + 1 Next j Next
If k = 1 Then validate = True End Function
Private Function prime(n As Integer) As Boolean Dim i As Integer For i = 2 To Sqr(n) '**********FOUND**********
If n Mod i = 0 Then Exit Function Next i prime = True End Function
第5题
'题目:本程序功能是查找给定范围内满足以下条件'的整数数对。
'条件1是每个整数的各位数字各不相同,且不得为'数字0,
'条件2是第二个数等于第一个数的两倍。 '例如123和246就是符合条件的数对。 Option Explicit
Private Sub Command1_Click() Dim i As Integer Dim n As Integer For i = 123 To 5678 n = i * 2
If fun(i) And fun(n) Then
List1.AddItem \ End If Next i End Sub
'**********FOUND**********
Private Function fun(Byval n As Integer) As Boolean Dim a() As Integer, i As Integer, j As Integer Do
i = i + 1
ReDim Preserve a(i) a(i) = n Mod 10
If a(i) = 0 Then Exit Function n = n \\ 10 '**********FOUND********** Loop Until n= 0
For i = 1 To UBound(a) - 1 For j = i + 1 To UBound(a) '**********FOUND**********
If a(i) = a(j) Then Exit For Next j Next i fun = True
End Function
第6题
'[题目]本程序的功能是:随机生成一个有n个元素的数组(n由inputBox函数), '找出其中的最大元素并将它删除,再输出删除后的数组。 Option Explicit Option Base 1
Dim a() As Integer, n As Integer Private Sub Command1_Click() Dim i As Integer
n = InputBox(\请输入数组个数\ ReDim a(n) For i = 1 To n
a(i) = Int(Rnd * 100) + 1 Text1 = Text1 & Str(a(i)) Next i
Call Lookup(a) '**********FOUND********** For i = 1 To n-1
Text2 = Text2 & Str(a(i)) Next i End Sub
Private Sub Lookup(a() As Integer)
Dim Maxv As Integer, maxp As Integer, i As Integer Maxv = a(1): maxp = 1 For i = 2 To n
If a(i) > Maxv Then Maxv = a(i): maxp = i End If Next i
Call move_f(a, maxp) End Sub
Private Sub move_f(a() As Integer, k As Integer) Dim i As Integer
For i = k + 1 To UBound(a) '**********FOUND********** a(i-1) = a(i) Next i
'**********FOUND********** ReDim preserve(UBound(a) - 1) End Sub
第7题
'【题目】本程序的功能是:找出介于100、999之间的''由三个不同数字组成的完全平方数。
'所谓完全平方数是指平方根为整数的数。例如,529的''各位数字不同,且平方根是23, '所以529是符合要求的数。
Option Explicit Option Base 1
Private Sub Command1_Click() Dim i As Integer, p As Single For i = 100 To 999
If pf(i) And verify(i) Then p = Sqr(i)
List1.AddItem i & \ End If Next i End Sub
Private Function pf(n As Integer) As Boolean If Sqr(n) = Int(Sqr(n)) Then pf = True End Function
'**********FOUND**********
Private Function verify(Byval n As Integer) As Boolean
Dim a() As Integer, k As Integer, i As Integer, j As Integer Do
k = k + 1
ReDim Preserve a(k) a(k) = n Mod 10 n = n \\ 10
'**********FOUND********** Loop Until n <= 0
For i = 1 To UBound(a) - 1 For j = i + 1 To UBound(a) '**********FOUND**********
If a(i) = a(j) Then Exit Function Next j Next i verify = True End Function
五、程序设计_共12题 (选:共2题,1题为8分,另一题10分=18分) 第1题
'--------------------------------- '【程序设计】
'--------------------------------- '【题目要求】
' 1) 编写程序,生成一个4行5列的二维数组,其每''个数组元素是随机产生的两位数,
' 求该数组的最大元素及其所在的行号、列号。 ' (若有多个相同的最大元素,则要一一标出其所在''行号、列号)
' [算法提示]首先找出最大元素,再将数组中的元素''与最大元素一一比较,
' 若有相等元素则输出其所在位置。 ' 窗体设计界面参见已给出的参考界面。
'【编程要求】
' 1) 运行程序,按“运行”按钮(Command1),生成一个4行5列的两位随机整数数组, ' 按参考界面格式显示在多行文本框Text1中,再调用求二维数组最大元素的通用过程, ' 最后将结果输出到一个多行文本框Text2中;(注意代码中不得使用randomize语句) ' 按“清除”按钮(Command2),则将文本框与图片框清空;
' 2) 程序中应定义一个名为maxele的通用函数过程,用于求二维数组的最大元素。 '【代码书写要求】
'1)文本框、命令按钮的名称必须使用系统默认的名称,如Text1,Command1等 '2)请在“****Program*****”与“****End*****”之间添加程序代码 '3)请在指定区间
' (1)先写出自定义函数过程maxele的程序代码以及Command2的代码 ' (2)最后完善Command1_Click()事件过程代码。 ' !!!! 注意:
' Command1_Click()过程的结束语句 End Sub及其它已经给出的代码, ' 均不得删除,否则无分。
第2题
'--------------------------------- '【程序设计】
'--------------------------------- '【题目要求】
' 编一程序,将一维数组中元素向右循环移位,移位次数键盘输入。 ' 例如,数组各元素的值依次为1,2,3,4,5,6,7,8,9,10; ' 位移3次后,各元素的值依次为8,9,10,1,2,3,4,5,6,7。 ' 窗体设计界面参见已给出的参考界面。
'【编程要求】
' 1) 数组可定义为固定大小的10个元素的数组。
' 按“输入”按钮(Command1),则用inputbox函数逐一输入 ' “1---10”10个数据,并显示在文本框Text1中。 ' 在文本框Text2中输入循环移位位数(请输入3)
' 按“移位”按钮,调用通用Sub过程rmove(),实现移位操作,同时将 ' 移位后10个数据显示在文本框Text3中。
' 按“清除”按钮Command2,则将3个文本框清空,将焦点置于Text2上; ' 按“退出”按钮Command3,结束程序运行
' 2)程序中应定义一个通用Sub过程rmove(),以实现移位操作。 '【代码书写要求】
'1)文本框、命令按钮的名称必须使用系统默认的名称,如Text1,Command1等