19.自冪數(shù)是指一個(gè) n 位數(shù),它的每個(gè)位上的數(shù)字的 n 次冪之和等于它本身。使用枚舉法尋找5位數(shù)以內(nèi)的自冪數(shù)算法如下: (1)使用循環(huán)列出1到99999中的每一個(gè)數(shù)zmsknz (2)通過(guò)自定義函數(shù)ddknzms拆解得到每個(gè)數(shù)中的每位數(shù)上的數(shù)碼及它們對(duì)應(yīng)的n次冪之和 (3)將zmsknz與ddknzms進(jìn)行比較,若相等則說(shuō)明是自冪數(shù),可將其加入列表。 編寫(xiě)VB程序,使用枚舉法得到5位數(shù)以內(nèi)的自冪數(shù),程序設(shè)計(jì)界面如圖所示: 請(qǐng)根據(jù)算法及相應(yīng)注釋將下面的程序補(bǔ)充完整: Function ddknzms(zmsknz As Long) As Long'得到可能的自冪數(shù) Dim zmsknz_str As String'字符串類型自冪數(shù)可能值 Dim zmsknz_length As Integer,zmswsxh As Integer'字符串類型自冪數(shù)可能值字符個(gè)數(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é)生會(huì)選舉需要從學(xué)校數(shù)據(jù)庫(kù)中隨機(jī)抽取若干名學(xué)生作為監(jiān)票人。該數(shù)據(jù)庫(kù)文件名為school。mdb,其中數(shù)據(jù)表student存儲(chǔ)有關(guān)學(xué)生學(xué)號(hào)(xuehao)、姓名(xingming)相關(guān)信息,括號(hào)內(nèi)的內(nèi)容為對(duì)應(yīng)字段名。該程序編輯界面如圖所示,相關(guān)對(duì)象名可參考標(biāo)識(shí)圖。 cqxhxm xskcqxhxm 當(dāng)主持人點(diǎn)擊按鈕“生成抽號(hào)”后,下方的標(biāo)簽會(huì)顯示可抽取的學(xué)號(hào)姓名,一定時(shí)間后顯示被抽取作為監(jiān)票人的學(xué)號(hào)姓名。 cz cq 'xxxss:學(xué)校學(xué)生數(shù),kcq:可抽取 'xhxm:學(xué)號(hào)姓名,kcq:可抽取 Dim xxxss As Integer xhxmbq Dim xhxm(3000)As String Dim kcq(3000)As Boolean
'cq_Click:?jiǎn)⒂脙蓚€(gè)定時(shí)器 Private Sub cq_Click ( ) cqxhxm.Enabled=True xskcqxhxm.Enabled=True End Sub
Private Sub cz_Click'初始化數(shù)組kcq,使每個(gè)元素?cái)?shù)據(jù)都處于可顯示狀態(tài) For i=0To xxxss-1 ①
Next i End Sub
Private Sub xskcqxhxm_Timer'若數(shù)組kcq第x個(gè)元素處于可抽取狀態(tài),則顯示數(shù)組xhxm第x個(gè)元素 x=Int(Rnd*xxxss) If kcq(x) Then xhxmbq.jye.ai=kcq(x)'②
End Sub
Private Sub Form_Load ( ?。?從數(shù)據(jù)庫(kù)中提取需要的學(xué)號(hào)姓名相關(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é)號(hào)姓名作為監(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。