收藏 分销(赏)

VB程序改错.doc

上传人:pc****0 文档编号:9443826 上传时间:2025-03-26 格式:DOC 页数:15 大小:85.50KB 下载积分:10 金币
下载 相关 举报
VB程序改错.doc_第1页
第1页 / 共15页
VB程序改错.doc_第2页
第2页 / 共15页


点击查看更多>>
资源描述
四、程序改错 共7题 第1题 题号:7 '【题目】从10个各不相同的正整数中,剔除若干个数。使得保留下来的数中, ' 任意两个数的和都不是平方数 '(所谓平方数就是该数等于某一个数的平方,例如4就是一个平方数)。 Option Explicit Option Base 1 Private Sub Command1_Click() Dim a(10) As Integer, i As Integer, j As Integer, p As Integer, k As Integer '**********FOUND********** Do While p <= 10 k = Int(20 * Rnd) + 1 For j = 1 To p '**********FOUND********** If k = a(j) Then Exit Do Next j If j > p Then p = p + 1 a(p) = k Text1 = Text1 & Str(k) End If Loop Call delete(a, p) For i = 1 To p Text2 = Text2 & Str(a(i)) Next i End Sub Private Sub delete(a() As Integer, p As Integer) Dim idx As Integer, j As Integer, sum As Integer idx = 2 Do While idx < p For j = 1 To idx - 1 sum = a(idx) + a(j) If Int(Sqr(sum)) = Sqr(sum) Then Exit For Next j '**********FOUND********** If j > idx - 1 Then a(idx) = a(p) p = p - 1 Else idx = idx + 1 End If Loop End Sub 答案: =======(答案1)======= Do While p < 10 =======(答案2)======= If k = a(j) Then Exit For =======(答案3)======= If j <= idx - 1 Then 第2题 题号:8 '【题目】本程序的功能是生成一组(10个)两位的互质数。 '一组互质数是指其中任意两个数之间都不存在除1以外的任何公约数。 Private Sub Command1_Click() Dim i As Integer, k As Integer, num(10) As Integer Dim flag As Boolean, n As Integer num(1) = Int(Rnd * 90) + 10 k = 1 Do '**********FOUND********** flag = True n = Int(Rnd * 90) + 10 For i = 1 To k If gcd(num(i), n) <> 1 Then flag = False Next i If flag Then k = k + 1 num(k) = n End If Loop Until k = 10 For i = 1 To 10 Text1 = Text1 & Str(num(i)) Next i End Sub '**********FOUND********** Private Function gcd(m%, ByVal n%) As Integer Dim r As Integer Do r = m Mod n m = n n = r Loop Until r = 0 '**********FOUND********** gcd = n End Function 答案: =======(答案1)======= flag = False =======(答案2)======= Private Function gcd(ByVal m%, ByVal n%) As Integer =======(答案3)======= gcd = m 第3题 题号:9 '【题目】本程序的功能是:把10~20范围内的数分别表示成若干个质因子连乘的形式。 Option Explicit Option Base 1 Private Sub Command1_Click() Dim j As Integer, pf() As Integer, i As Integer Dim st As String For i = 10 To 20 Call prime_f(i, pf) st = CStr(i) & "=" '**********FOUND********** For j = 1 To UBound(pf) st = st & Str(pf(j)) & "*" Next j st = st & Str(pf(j)) List1.AddItem st Next i End Sub '**********FOUND********** Private Sub prime_f(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 <= 0 End Sub 答案: =======(答案1)======= For j = 1 To UBound(pf) - 1 =======(答案2)======= Private Sub prime_f(ByVal n As Integer, a() As Integer) =======(答案3)======= Loop Until n <= 1 第4题 题号:1 '[题目]本程序的功能是:查找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 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 For Next i prime = True End Function 答案: =======(答案1)======= Private Function validate(Byval n As Integer) As Boolean =======(答案2)======= ReDim Preserve num(k) =======(答案3)======= If n Mod i = 0 Then Exit Function 第5题 题号:4 '题目:本程序功能是查找给定范围内满足以下条件的整数数对。 '条件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 "(" & i & "," & n & ")" End If Next i End Sub '**********FOUND********** Private Function fun(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 答案: =======(答案1)======= Private Function fun(ByVal n As Integer) As Boolean =======(答案2)======= Loop Until n = 0 =======(答案3)======= If a(i) = a(j) Then Exit Function 第6题 题号:3 '[题目]本程序的功能是:随机生成一个有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("请输入数组个数", , 10) 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 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) = a(i + 1) Next i '**********FOUND********** ReDim a(UBound(a) - 1) End Sub 答案: =======(答案1)======= For i = 1 To n-1 =======(答案2)======= a(i-1) = a(i) =======(答案3)======= ReDim Preserve a(UBound(a) - 1) 第7题 题号:10 '【题目】本程序的功能是:找出介于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 & "=" & p & "*" & p 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(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 For Next j Next i verify = True End Function 答案: =======(答案1)======= Private Function verify(ByVal n As Integer) As Boolean =======(答案2)======= Loop Until n <= 0 =======(答案3)======= If a(i) = a(j) Then Exit Function
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服