版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
專題二十VB自定義函數(shù)及遞歸算法PART01過程和函數(shù)過程函數(shù)過程與函數(shù)的關(guān)系過程函數(shù)PART02函數(shù)的調(diào)用PART03遞歸算法定義即:在定義一個過程或函數(shù)時又出現(xiàn)了調(diào)用本過程或者函數(shù)的成分,即調(diào)用了它自己本身,這稱為遞歸。PART04典例分析(2018改編,2分)有如下VB程序段:PrivateSubCommand1_Click() DimxAsInteger,yAsInteger x=9:y=13 Printfun(x,y);x;yEndSubPrivateFunctionfun(ByValaAsInteger,bAsInteger)AsInteger a=aMod5 b=b\5 fun=a+bEndFunction1程序運行時,單擊命令按鈕Command1,則窗體上的輸出結(jié)果是()A.6913B.22913C.642D.692D(2017臺州高二聯(lián)考,2分)某VB自定義函數(shù)如下:Functionf(mAsInteger,nAsLong)AsLong Ifm<=1Then f=1 Else f=(m+1)*n EndIfEndFunction關(guān)于此函數(shù)的使用,下列說法不正確的是()A.可用語句f(2*(-3),3)調(diào)用該函數(shù)B.f(f(2*(-3),3),4)調(diào)用的結(jié)果是1C.該函數(shù)采用的主要算法是遞歸D.f(2,2+3)調(diào)用的結(jié)果是15C2(2018改編,2分)有如下VB自定義函數(shù):PublicFunctionlcm(xAsInteger,yAsInteger)AsInteger DimmAsInteger DimflagAsBoolean flag=False m=0 DoWhileflag=False m=m+x IfmMody=0Then flag=True EndIf Loop lcm=mEndFunction3在程序中調(diào)用函數(shù)lcm(12,18)得到的返回值是()A.6B.24C.30D.36D2018改編,2分)下列VB程序中,f是一個遞歸函數(shù):PrivateSubCommand1_Click() DimyAsLong Text1.Text="" y=f(3) Label1.Caption=Str(y)EndSubFunctionf(nAsInteger)AsLong′遞歸函數(shù) Text1.Text=Text1.Text+Str(n) Ifn<=1Then f=1 Else f=f(n-1)+2 EndIfEndFunction4程序運行時,單擊命令按鈕Command1后,文本框Text1中顯示的內(nèi)容是()A.3B.321C.123D.1B(2018改編,4分)一個人趕著鴨子去8個村莊賣,每經(jīng)過一個村子,賣去所趕鴨子的一半又一只。他在第5個村賣了200只鴨子,其中部分代碼如下,請在劃線處填入正確的代碼。PrivateSubCommand1_Click()DimaAsIntegera=Val(Text1.Text) ′a為村莊號Label1.Caption=Str(f(a)) ′賣出的鴨子數(shù)Label2.Caption=① ′經(jīng)過村莊a時總鴨子數(shù)EndSubStr(f(a)*2-2)5Functionf(nAsInteger)AsInteger ′賣出鴨子數(shù)n為村莊號 Ifn=5Then f=200 ElseIfn>5Then f=
②
Else f=f(n+1)*2 EndIfEndFunctionf(n-1)/2小積累(2017溫州新力量聯(lián)盟,5分)公民身份號碼是特征組合碼,由十七位數(shù)字本體碼和一位校驗碼組成。排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位數(shù)字校驗碼。數(shù)字校驗碼的計算過程如下三步所示:a.對身份證號碼的前17位數(shù)字的權(quán)求和s=Sum(sfz(i)*jq(i)),i=1,...,17其中,sfz(i):表示第i位置上的身份證號碼數(shù)字值 jq(i):表示第i位置上的加權(quán)因子 jq(1)至jq(17)依次為:7910584216379105842b.求模yy=sMod11c.通過模得到對應(yīng)的校驗碼6模(y):012345678910校驗碼(jym):10X98765432小明編寫了一個驗證18位身份證校驗碼的VB程序,實現(xiàn)功能如下:單擊“校驗”按鈕Command1,程序從數(shù)據(jù)庫讀取相關(guān)數(shù)據(jù)進行處理,在列表框List1中顯示身份證號碼及判斷檢驗碼是否正確的結(jié)果。VB程序運行界面如圖所示。實現(xiàn)上述功能的VB程序如下,請回答下列問題:1)解決此問題所用的算法是
(選填:解析算法/枚舉算法)。2)請在劃線處填入合適的代碼。Dimsfz(1To100)AsString ′存放身份證號碼Dimjq(1To100)AsInteger ′存放加權(quán)因子DimjiegAsString′存放判斷結(jié)果PrivateSubForm_Load() ′本過程從數(shù)據(jù)庫中讀取身份證號碼、加權(quán)因子分別存儲到數(shù)組 ′sfz、jq中 ′代碼略EndSubPrivateSubCommand1_Click() Fori=1Ton ′變量n指的是從數(shù)據(jù)庫讀取的身份證號碼個數(shù) jieg=①
List1.AddItemsfz(i)+""+jieg NextiEndSub解析算法jy(sfz(i))Functionjy(sfz1AsString)AsString ′對身份證的校驗碼進行校驗 DimsAsInteger,yAsInteger,rAsInteger DimdjymAsString jym="10X98765432" Fori=1To17 r=Val(Mid(sfz1,i,1))*
②
s=s+r Nexti y=sMod11 djym=
③
Ifdjym=Mid(sfz1,18,1)Then jy="正確!" Else jy="錯誤!" EndIfEndFunctionjq(i)Mid(jym,y+1,1)(2018改編,4分)利用1×1×1立方厘米正方體木塊,堆積一個底座是正方形的類似金字塔的造型,如圖(a)所示。如第1層1塊木塊,第2層3×3塊木塊,第3層5×5塊木塊,……第n層(2n-1)×(2n-1)塊木塊。問堆積n層需要多少木塊?設(shè)計解決問題的程序,界面如圖(b)所示。該程序的使用方法與功能:在文本框Text1內(nèi)輸入堆積的層數(shù),單擊“計算”按鈕Command1,在Text2中顯示木塊總數(shù)。圖(a)圖(b)7PrivateSubCommand1_Click() DimmkAsLong DimnAsLong n=Val(Text1.Text) Ifn<1Then MsgBox("n不能小于1") ′MsgBox函數(shù)功能是彈出一個對話框,等待
′用戶單擊按鈕,并返回一個Integer值表示用戶單擊了哪一個按鈕 Else mk=zs(n) Text2.Text=Str(mk) EndIfEndSubFunctionzs(nAsInteger)AsLong Ifn=1Then zs=1 Else zs=
EndIfEndFunctionPrivateSubText1_Click() Text1.Text="" Text2.Text=""EndSub①為了程序正確運行,劃線處的代碼為
。②如果在Text1中輸入0,程序結(jié)果是
。zs(n-1)+(2*n-1)^2n不能小于1解析:①第n層需要的木塊數(shù)是(2*n-1)^2,則堆積到第n層所需要的木塊數(shù)是第n層+堆積到第n-1層所需要的木塊數(shù),堆積到第n-1層所需要的木塊數(shù)是第n-1層+堆積到第n-2層所需要的木塊數(shù),……,故可形成遞推式第n層總的積木數(shù)zs=zs(n-1)+(2*n-1)^2。②在Text1中輸入0,即n=0時,執(zhí)行分支語句MsgBox("n不能小于1"),彈出消息框顯示"n不能小于1"。第14課第(5)題P88(8)(2016嘉興模擬,3分)約瑟夫問題。編號為1,2,3,…,n的n個人按順時針方向圍坐一圈,每人手持一個密碼(正整數(shù))。開始任意選一個正整數(shù)m作為報數(shù)的上限值,從第一個人開始順時針自1開始順序報數(shù),報到m時停止,同時報m的人出列,并將他的密碼作為新的上限值m,從他順時針下一個人開始重新自1開始報數(shù),如此下去直到所有人全部出列為止。要求:1)由用戶輸入隊列人數(shù)n和正整數(shù)m,以及游戲的密碼上限x。2)隊列中每人所持的密碼隨機產(chǎn)生,大小必須在[1,x]區(qū)間。3)在程序界面中按出列順序顯示每個人的編號和出列時他所持的密碼。運行效果如圖所示。8實現(xiàn)上述功能的VB程序如下。請在劃線處填入適當(dāng)?shù)恼Z句和代碼,把程序補充完整。PrivateSubCommand1_Click()Dima()AsInteger,b()AsInteger,mAsInteger,nAsIntegerDimiAsInteger,kAsInteger,cAsInteger,xAsIntegern=Val(Text1.Text):m=Val(Text2.Text):x=Val(Text3.Text)ReDima(1Ton)AsInteger ′重新定義數(shù)組a,存儲下標(biāo)對應(yīng)編號人的隊列狀態(tài)ReDimb(1Ton)AsInteger ′重新定義數(shù)組b,存儲下標(biāo)對應(yīng)編號人的密碼 Randomize ′隨機數(shù)生成器初始化 Fori=1Ton a(i)=1′在列
① ′產(chǎn)生每個人的隨機密碼 Nexti c=0 k=0 List1.Clearb(i)=Int(x*Rnd)+1或b(i)=Int(x*Rnd+1)
DoWhilec<n Fori=1Ton k=k+a(i)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《巨匠童心》課件
- 《童年回憶的》課件
- 《客戶梳理技巧》課件
- 2024年黑龍江農(nóng)業(yè)工程職業(yè)學(xué)院單招職業(yè)技能測試題庫標(biāo)準(zhǔn)卷
- 四川省南充市2025屆高三上學(xué)期高考適應(yīng)性考試(一診)英語試卷含答案
- 單位管理制度匯編大全職員管理
- 單位管理制度合并選集人力資源管理
- 單位管理制度分享合集【人力資源管理篇】
- 單位管理制度分享大合集【人力資源管理篇】
- 單位管理制度范例匯編職員管理篇十篇
- 2021-2022學(xué)年四川省南充市九年級(上)期末數(shù)學(xué)試卷
- 2024政府采購評審專家考試題庫附含答案
- 《商務(wù)跟單工作流程》課件
- 中小學(xué)膳食經(jīng)費管理的目標(biāo)與原則
- 2024高血壓的診斷與治療
- 重度子癇前期產(chǎn)后護理查房
- 制作課件wps教學(xué)課件
- 北京市海淀區(qū)2023屆高三上學(xué)期期末考試化學(xué)試卷 附解析
- MCN機構(gòu)簽約合同范本
- 2024年滬教版一年級上學(xué)期語文期末復(fù)習(xí)習(xí)題
- 2024廣東省廣州市天河區(qū)中考一模語文試題含答案解析
評論
0/150
提交評論