〔考试须知〕
1. 改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅供参考。
2. 考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分。
3. 程序代码书写应呈现锯齿形。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一.改错题(17分)
一.改错题(17分)
〔题目〕
找出1 000以内的超完全数。设符号ф(N)表示N的所有因子(包括N在内)的和,若ф(ф(N))=2N,则N就是一个超完全数。
例如,16的因子和为1+2+4+8+16=31,而31的因子和1+31=32,32=2*16,故16是一个超完全数。
例如,16的因子和为1+2+4+8+16=31,而31的因子和1+31=32,32=2*16,故16是一个超完全数。
含有错误的源程序如下:
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim I As Integer, A() As Integer
Dim K As Integer, Sum1 As Integer, Sum2 As Integer
Sum1 = 0: Sum2 = 0
For I = 2 To 1000
Call Fctor(I, Sum1)
Call factor(I, Sum2)
If Sum2 = 2 * I Then
K = K + 1
ReDim Preserve A(K)
A(K) = I
End If
Next I
For I = 1 To K
Text1 Text = Text1, Text & Str(A(I)) & ""
Next I
End Sub
Private Sub Fctor(N As Integer, S As Integer)
Dim I As Integer, J As Integer
Do While I < N
If N Mod I = 0 Then
S = S + I
End If
I = I + 1
End Sub
〔要求〕
1. 新建工程,输入上述代码,改正程序中的错误。
2. 改错时,不得增加或删除语句,但可适当调整语句位置。
---------------------------------------------------------------------------------------------------
二、编程题(23分)
〔题目〕
生成一个三行八列的二维数组A(3,8),其中前两行元素产生的方法如下:
用初值X1~X8作为A的第一行元素;X9~X16作为A的第二行元素;A的第三行元素值取前两行同列元素的最大公约数。
最后按下图所示格式显示在图片框中。
〔编程要求〕
1.程序参考界面如下图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见。
3. 程序中必须定义一个求两个数最大公约数的通用函数过程。
〔要求〕