19.自冪數(shù)是指一個 n 位數(shù),它的每個位上的數(shù)字的 n 次冪之和等于它本身。使用枚舉法尋找5位數(shù)以內(nèi)的自冪數(shù)算法如下: (1)使用循環(huán)列出1到99999中的每一個數(shù)zmsknz (2)通過自定義函數(shù)ddknzms拆解得到每個數(shù)中的每位數(shù)上的數(shù)碼及它們對應(yīng)的n次冪之和 (3)將zmsknz與ddknzms進行比較,若相等則說明是自冪數(shù),可將其加入列表。 編寫VB程序,使用枚舉法得到5位數(shù)以內(nèi)的自冪數(shù),程序設(shè)計界面如圖所示: 請根據(jù)算法及相應(yīng)注釋將下面的程序補充完整: Function ddknzms(zmsknz As Long) As Long'得到可能的自冪數(shù) Dim zmsknz_str As String'字符串類型自冪數(shù)可能值 Dim zmsknz_length As Integer,zmswsxh As Integer'字符串類型自冪數(shù)可能值字符個數(shù) zmsknz_str=Trim(Str(zmsknz)) zmsknz_length=Len(zmsknz_str) For zmswsxh=1To zmsknz_length ddknzms=ddknzms+Val(Mid(zmsknz_str,zmswsxh,1))^①
Next zmswsxh End Function Private Sub Command1_Click Const ZMSWS= Dim zmsknz As Long,zmsknz_zz As Long zmsknz_zz=10^ZMSWS-1 For zmsknz=1To zmsknz_zz If ②
Then List1.AddItem (Str(zmsknz)) Next zmsknz End Sub。
20.某校學(xué)生會選舉需要從學(xué)校數(shù)據(jù)庫中隨機抽取若干名學(xué)生作為監(jiān)票人。該數(shù)據(jù)庫文件名為school。mdb,其中數(shù)據(jù)表student存儲有關(guān)學(xué)生學(xué)號(xuehao)、姓名(xingming)相關(guān)信息,括號內(nèi)的內(nèi)容為對應(yīng)字段名。該程序編輯界面如圖所示,相關(guān)對象名可參考標(biāo)識圖。 cqxhxm xskcqxhxm 當(dāng)主持人點擊按鈕“生成抽號”后,下方的標(biāo)簽會顯示可抽取的學(xué)號姓名,一定時間后顯示被抽取作為監(jiān)票人的學(xué)號姓名。 cz cq 'xxxss:學(xué)校學(xué)生數(shù),kcq:可抽取 'xhxm:學(xué)號姓名,kcq:可抽取 Dim xxxss As Integer xhxmbq Dim xhxm(3000)As String Dim kcq(3000)As Boolean
'cq_Click:啟用兩個定時器 Private Sub cq_Click ( ) cqxhxm.Enabled=True xskcqxhxm.Enabled=True End Sub
Private Sub cz_Click'初始化數(shù)組kcq,使每個元素數(shù)據(jù)都處于可顯示狀態(tài) For i=0To xxxss-1 ①
Next i End Sub
Private Sub xskcqxhxm_Timer'若數(shù)組kcq第x個元素處于可抽取狀態(tài),則顯示數(shù)組xhxm第x個元素 x=Int(Rnd*xxxss) If kcq(x) Then xhxmbq.jye.ai=kcq(x)'②
End Sub
Private Sub Form_Load ( )'從數(shù)據(jù)庫中提取需要的學(xué)號姓名相關(guān)數(shù)據(jù)并初始化數(shù)組kcq Randomize xxxss=0 Dim conn As New ADODB.Connection,rs As New ADODB.Recordset Dim str_conn as String,str_sql As String str_conn=“driver=Microsoft access driver(*.mdb);DBQ=“&app.jye.ai&“\school.jye.ai“; conn.jye.ai str_conn str_sql=“select*from students“ rs.jye.ai str_sql Do While Not rs.eof xxxss=xxxss+1 xhxm(xxxss)=rs.jye.ai(“xuehao“)&rs.jye.ai(“xingming“) rs.movenext Loop For i=0To xxxss-1 kcq(i)=True Next i End Sub
Private Sub cqxhxm_Timer'決定抽取的學(xué)號姓名作為監(jiān)票人 xskcqxhxm.Enabled=False For i=0To xxxss-1 If xhxmbq.Caption=xhxm(i) Then kcq(i)=False Next i cqxhxm.Enabled=False End Sub。