资源描述
2010年(春)上机 Visual Basic(VB05)答案一、改错【题目】本程序的功能是随机生成n个两位整数(n利用键盘输入),并存入一个数组。找出数组中的最大元素并将其删除,删除的方法是将最大元素后面的元素依次前移一个位置,数组长度减1。重复上述过程,直到得到只有一个元素的数组为止。Option ExplicitPrivate Sub Command1_Click() Dim a() As Integer, n As Integer, mv As Integer, mp As Integer Dim i As Integer, j As Integer, st As String n = InputBox(元素个数, 数组处理, 10) Randomize ReDim a(n) For i = 1 To n a(i) = Int(Rnd * 90) + 10 Text1 = Text1 & Str(a(i) Next i st = 位置错 For i = 1 To n - 1 Call maxv(a, mv, mp) For j = mp To UBound(a) - 1 err To n - 1 a(j) = a(j + 1) Next j ReDim Preserve a(UBound(a) - 1) err 无Preserve For j = 1 To UBound(a) st = st & Str(a(j) Next j List1.AddItem st st = Next iEnd SubPrivate Sub maxv(a() As Integer, maxe As Integer, mp As Integer) Dim i As Integer maxe = a(1): mp = 1 For i = 2 To UBound(a) If a(i) maxe Then maxe = a(i): mp = i End If Next iEnd Sub二、编程题【题目】编写程序,找出nm之间所有的循环素数。所谓循环素数是指本身为素数,且其各位数字循环位移组成的新数全部为素数的整数。例如719是素数,而197、971也都是素数,所以719是循环素数。Option ExplicitOption Base 1Private Sub Command1_Click() Dim i As Integer, j As Integer, na() As Integer Dim n As Integer, m As Integer n = Text1: m = Text2 For i = n To m Call change(i, na) For j = 1 To UBound(na) If Not prime(na(j) Then Exit For Next j If j UBound(na) Then List1.AddItem i End If Next iEnd SubPrivate Function prime(n As Integer) As Boolean Dim i As Integer For i = 2 To Sqr(n) If n Mod i = 0 Then Exit Function Next i prime = TrueEnd FunctionPrivate Sub change(n As Integer, na() As Integer) Dim p As String, i As Integer, k As Integer p = CStr(n) k = Len(p) ReDim na(k) na(1) = n For i = 2 To UBound(na) na(i) = Val(Mid(p, i, k - i + 1) & Left(p, i - 1) Next iEnd SubPrivate Sub Command2_Click() Text1 = : Text2 = List1.Clear Text1.SetFocusEnd SubPrivate Sub Command3_Click() EndEnd Sub
展开阅读全文