问答题 改错题(14分) 【题目】 本程序的功能是在六位正整数中查找超级自恋数。如果将一个六位正整数从高位到低位,每两位分为一组,共分为三组,三组数据的立方的和正好等于其本身,则称该六位正整数为超级自恋数。 1 Option Explicit 2 Private Sub CmdFind_Click() 3 Dim k As Long,num()As Integer,fg As Boolean 4 Dim i As Integer,st As String 5 st="" 6 For k=100000 To 999999 7 fg=False 8 Call judge(k,num,fg) 9 If fg Then 10 For i=UBound(num) To 1 Step -1 11 st=st & num(i) & "^3+" 12 Next i 13 List1.Additem Left(st,Len(st)-1) & "=" & k 14 End If 15 Next k 16 End Sub 17 Private Sub judge(n As Long,a()As Integer,fg As Boolean) 18 Dim k As Integer,nt As Long,sum As Long 19 nt=n 20 Do 21 k=k+1 22 ReDim a(k) 23 a(k)=n Mod 100 24 n=n/100 25 Loop Until n=0 26 For k=1 To UBound(a) 27 sum=sum+a(k)^3 28 Next k 29 If sum=nt Then fg=True 30 End Sub 【要求】 1.新建工程,按参考界面形式创建窗体,再从T盘根目录下的err.txt文件中将有错误的程序代码复制到代码编辑器窗口中或自行输入上述代码,改正程序中的错误。 2.改错时,不得增加或删除语句,但可适当调整语句的位置。 3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。
【正确答案】 第5行 st="" 改为挪动至 For循环内 ,如fg=False之后 第17行Private Sub judge(n As Long,a()As Integer,fg As Boolean) 改为ByVal n 第22行 ReDim a(k) 改为Redim Preserve a(k)
【答案解析】