vb第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)課件_第1頁
vb第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)課件_第2頁
vb第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)課件_第3頁
vb第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)課件_第4頁
vb第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第五章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)心理專家與經(jīng)濟(jì)學(xué)家會問的問題想象一下,如果有一張足夠大、足夠柔韌的紙,把它折疊42次,會產(chǎn)生什么效果?你覺得會有多高?一個(gè)冰箱?一層樓?還是一棟摩天大廈?一個(gè)令人驚奇的問題-折紙問題一張厚度0.1毫米的紙,折疊42次就可以厚到43萬公里———超出了地球到月球38萬公里的距離0.1*2^42=439804651110.4≈43.9804*104(萬)

*103(公里)

*103(毫米)5-0循環(huán)折紙問題一張厚度0.1毫米的紙,折疊27次就可以達(dá)到或超過珠穆朗瑪峰的8848米的高度?PrivateSubCommand1_Click()d=Val(Text1.Text)limit=Val(Text2.Text)n=0DoWhiled<=limit

d=2*d

n=n+1LoopText3.Text=nText4.Text=Int(d*100+0.5)/100EndSub其他常見的循環(huán)問題求累加和1+2+3+...+100使用計(jì)算器加數(shù)用于運(yùn)動(dòng)會累計(jì)分?jǐn)?shù)或商店累計(jì)營業(yè)額等。5.1循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的概念P102LoopStructureProgramming循環(huán)是指在程序設(shè)計(jì)中,從某處開始有規(guī)律地反復(fù)執(zhí)行某一程序塊的現(xiàn)象,重復(fù)執(zhí)行的程序塊稱為“循環(huán)體”。VB循環(huán)結(jié)構(gòu)語句:Do…LoopWhile…WendFor…Next5.2Do...Loop語句前測型循環(huán)結(jié)構(gòu)與后測型循環(huán)結(jié)構(gòu)。求累加和例5-l求累加和1+2+3+...+100(如圖5-2)。S1=0+1S2=S1+2S3=S2+3S4=S3+4…S100=S99+100S=0+1 (0+1)S=S+2 (0+1+2)S=S+3 (0+1+2+3)S=S+4 (0+1+2+3+4)…S=S+100 (0+1+2+3+4+…100)S=S+

nn=n+1S:累加器,采用累加的方法,存放累加的和(開始為0),n:計(jì)數(shù)器,存放“加數(shù)”,從1開始到100為止。求累加和例5-l求累加和1+2+3+...+100(如圖)。流程圖如圖所示n←n+1S←S+n輸出S當(dāng)n<=100n←1計(jì)數(shù)器賦初值S←0 累加器賦初值設(shè)計(jì)步驟如下:設(shè)計(jì)窗體界面命令按鈕的Click事件代碼;PrivateSubcommand1_Click()DimsAsInteger,nAsIntegers=0:n=1DoWhilen<=100

s=s+n n=n+1LoopLabel2.Caption="1+2+3+...+l00="&sEndSubn←n+1S←S+n輸出S當(dāng)n<=100n←1計(jì)數(shù)器賦初值S←0累加器賦初值5.2.1前測直到型DO…Loop循環(huán)首先判斷條件,條件為假時(shí)執(zhí)行循環(huán)體,直到條件為真時(shí),終止循環(huán)。其語法為Do[Until(條件)][(循環(huán)體語句列)]Loop說明:(l)(循環(huán)體語句列)將被重復(fù)執(zhí)行直到條件為True。條件循環(huán)體假真例5-l可以改為直到型:PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0:n=1DoUntiln>100s=s+nn=n+1LoopLabel2.Caption=“1+2+3+...+100="&sEndSub后測直到型Do…Loop循環(huán)首先執(zhí)行循環(huán)體,然后判斷條件。條件為假時(shí)執(zhí)行循環(huán)體,直到條件為真時(shí),終止循環(huán)。因此執(zhí)行循環(huán)的最少次數(shù)為1。其語法為Do[(循環(huán)體語句列)]Loop[Until(條件)]說明:(l)(循環(huán)體語句列)將被重復(fù)執(zhí)行直到條件為True。條件循環(huán)體假真

圖5-7計(jì)算圓周率的流程圖設(shè)計(jì)步驟如下:(1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性(圖5-8)

Command1的Click事件代碼為PrivateSubCommand1_Click()DimmAsIntegerm=Val(Text1.Text)p=0#:s=2#:e=0.1^mDot=s:p=Sqr(2+p):s=s*2/pLoopUntilAbs(t-s)<0.1^mf=String(m-1,"#")Text2.Text=Format(s,"0."&f)Text1.SetFocusEndSub文本框Text1的GotFocus事件代碼:PrivateSubText1_GotFocus()Text1.SelStart=0Text1.SelLength=Len(Text1.Text)EndSub求兩個(gè)正整數(shù)的最大公約數(shù)。[例5-4]容易理解方法,5-4DoWhile前測求最大公約數(shù)輸入兩個(gè)正整數(shù),求它們的最大公約數(shù)。分析:求最大公約數(shù)可以用“輾轉(zhuǎn)相除法”,方法如下:(1)以大數(shù)m作被除數(shù),小數(shù)n做除數(shù),相除后余數(shù)為r。(2)若r≠0,則m←n,n←r,繼續(xù)相除得到新的r。若仍有r≠0,則重復(fù)此過程,直到r=0為止。(3)最后的n就是最大公約數(shù)。求m對n的余數(shù)rn←rm←n輸出n當(dāng)r<>0求得m對n的余數(shù)r大數(shù)放m,小數(shù)放n輸入m,nPrivateSubCommand1_Click()m=Val(Text1.Text)n=Val(Text2.Text)Ifn>mThent=mm=nn=tEndIf

d=1DoWhiled<=nIfmModd=0AndnModd=0ThenMax=d

d=d+1LoopText3.Text=MaxEndSubd=d+1如果m、n都能被d整除,則max←d輸出max當(dāng)d<=n除數(shù)d=1大數(shù)放m,小數(shù)放n輸入m,n求兩個(gè)正整數(shù)的最大公約數(shù)。[例5.4]輸入兩個(gè)正整數(shù),遞減法求最大公約數(shù)。分析:求最大公約數(shù)可以用“遞減法”,方法如下:可能的因子從n到1,找到最大就退出循環(huán)d=d-1如果m、n都能被d整除,則max←d,退出循環(huán)輸出max當(dāng)d>=1除數(shù)d=n大數(shù)放m,小數(shù)放n輸入m,nPrivateSubCommand1_Click()m=Val(Text1.Text)n=Val(Text2.Text)Ifn=0Orm=0ThenMsgBox"不能為0"ExitSubEndIfIfn>mThent=mm=nn=tEndIf

d=nDoWhiled>=1IfmModd=0AndnModd=0ThenMax=d

ExitDoEndIf

d=d-1LoopText3.Text=MaxEndSubd=d-1如果m、n都能被d整除,則max←d輸出max當(dāng)d>=1除數(shù)d=n大數(shù)放m,小數(shù)放n輸入m,n求兩個(gè)正整數(shù)的最大公約數(shù)。[例5-4]第2版教材方法,5-4DoWhile后測求最大公約數(shù)輸入兩個(gè)正整數(shù),求它們的最大公約數(shù)。分析:求最大公約數(shù)可以用“輾轉(zhuǎn)相除法”,方法如下:(1)以大數(shù)m作被除數(shù),小數(shù)n做除數(shù),相除后余數(shù)為r。(2)若r≠0,則m←n,n←r,繼續(xù)相除得到新的r。若仍有r≠0,則重復(fù)此過程,直到r=0為止。(3)最后的m就是最大公約數(shù)。求m對n的余數(shù)rn←rm←n輸出m

當(dāng)r<>0大數(shù)放m,小數(shù)放n輸入m,n有錯(cuò)誤當(dāng)型While…Wend循環(huán)(前測)其語法為While<條件>[<循環(huán)體語句列>]WendDoWhilen<=l00s=s+nn=n+1Loop說明:(l)條件為True,(循環(huán)體語句列)將被重復(fù)執(zhí)行計(jì)算“條件”的值條件真?執(zhí)行循環(huán)體假真Whilen<=l00s=s+nn=n+1WendForI=1To3Step1PrintINextIPrintI初值送循環(huán)變量循環(huán)變量的值超過終值?執(zhí)行循環(huán)體中各個(gè)語句循環(huán)變量的值加步長值Next后的語句是否說明:1、循環(huán)變量超過終值循環(huán)結(jié)束,而不是等于終值。2、循環(huán)次數(shù)計(jì)算:(終值-初值)/步長+1。3、初值、終值可以是正數(shù)、負(fù)數(shù)和零;4、步長可以是整數(shù)或小數(shù),Step1可以省略。步長為正時(shí),超過—循環(huán)變量大于終值使循環(huán)結(jié)束步長為負(fù)時(shí),超過—循環(huán)變量小于終值使循環(huán)結(jié)束5、一般在循環(huán)體中不對循環(huán)變量重新賦值,否則影響循環(huán)的次數(shù)控制。步長為負(fù)時(shí)ForI=3To0Step-1.5PrintINextPrint"AfterFor:";IForI=0To3Step-1.5PrintINextPrint"AfterFor:";I01.53初值送循環(huán)變量循環(huán)變量的值超過終值?執(zhí)行循環(huán)體中各個(gè)語句循環(huán)變量的值加步長值Next后的語句是否求整除的自然數(shù)【例5-5]顯示1000以內(nèi)的所有能被37整除的自然數(shù)(如圖5-l3所示)。n從1到1000,如果n被37整除:nMod37=0設(shè)計(jì)步驟如下:(1)窗體界面的設(shè)計(jì)與屬性設(shè)置。增加一個(gè)文本框Text1、其MultiLine屬性為“True”,其ScrollBars屬性為“2-Vertical”

一個(gè)命令按鈕Command1和一個(gè)框架Frame1。

(2)編寫代碼。編寫命令按鈕的Click事件代碼:PrivateSubCommand1_Click()a=""Forn=1To1000IfnMod37=0Then

a=a&Str(n)&vbCrLfEndIfNextText1.Text=aEndSub說明:常量VbCrLf表示插入一個(gè)回車與換行符組合,相當(dāng)于:回車加上換行符(Chr(l3)&Chr(10))來產(chǎn)生一個(gè)行斷點(diǎn)。判斷一個(gè)正整數(shù)是否素?cái)?shù)?!纠?-2】輸入一個(gè)正整數(shù),利用“for”循環(huán)判斷是否素?cái)?shù)。分析:所謂“素?cái)?shù)”是指除了1和該數(shù)本身,不能被任何整數(shù)整除的數(shù)。一個(gè)自然數(shù)n不是素?cái)?shù),它一定有這樣的因子i:2in-1、Sqr(n)、n/2如圖5-4所示。命令按鈕的Click事件代碼PrivateSubCommand1_Click()DimnAsLongSelectCaseVal(Text1.Text)CaseIs<3MsgBox"請輸入一個(gè)大于2的整數(shù)!",vbInformation+vbOKOnly,"注意"CaseIs>2147483647MsgBox"此數(shù)太大!",vbInformation+vbOKOnly,"注意"CaseElsen=Val(Text1.Text)s=0i=2DoWhilei<=Sqr(n)

Ands=0IfnModi=0Thens=1Elsei=i+1EndIfLoopIfs=0Thena=“是一個(gè)素?cái)?shù)”Elsea=“不是素?cái)?shù)”EndIfLabel1.Caption=Str(n)&aEndSelectText1.SetFocusEndSubs=0Fori=2ToSqr(n)IfnModi=0Then s=1 ExitForEndIfNext判斷標(biāo)志n-1或n/2DoWhilei<=Sqr(n)IfnModi=0Thens=1ExitDoEndIf

i=i+1Loop求從1000到1100之間的所有素?cái)?shù)【例5-6】求從1000到1100之間的所有素?cái)?shù)。分析:現(xiàn)對1000~1100之間的各整數(shù)依次測試。使用了雙重For循環(huán),窗體界面的設(shè)計(jì)參見圖5-15,命令按鈕的Click事件代碼:PrivateSubCommand1_Click()a=""Forn=1001To1100Step2

s=0 Fori=2ToInt(Sqr(n)) IfnModi=0Then

s=1 ExitFor EndIfNextIfs=0Thena=a&Str(n)&vbCrLfNextText1.Text=aEndSub窗體上打印圖形在窗體上用字符“*”打印出下列圖形i值控制行值,j值控制列值兩重循環(huán)——循環(huán)嵌套5-6-2打印金字塔形PrivateSubCommand1_Click()Fori=1To5PrintTab(20-i);Forj=1To2*i-1Print"*";NextjNextiEndSub不換行5.4列表框與組合框ListBox&ComboBox為用戶提供了包含一些選項(xiàng)和信息的可滾動(dòng)列表。5.4.1列表框ListBox可以看到多個(gè)項(xiàng)目,當(dāng)不能同時(shí)顯示所有選項(xiàng)時(shí),會自動(dòng)加上一個(gè)垂直滾動(dòng)條,1.列表框的屬性與方法表5-1列出了常用的列表框?qū)傩?。?-1常用的列表框?qū)傩?。?/p>

性說

明List設(shè)置或返回列表中選項(xiàng),使用List屬性可以得到列表中的任何選項(xiàng)。例如List1.List(2)表示列表框List1中第3項(xiàng)的值。(列出項(xiàng)目內(nèi)容)List(i)添加內(nèi)容:Ctrl+EnterListCount返回列表框中的選項(xiàng)個(gè)數(shù)。(列表框項(xiàng)目的數(shù)量)ListIndex返回當(dāng)前選項(xiàng)的索引號,如果沒有選項(xiàng)被選中,該屬性為-1。(已選中的項(xiàng)目的位置)Selected在程序運(yùn)行使用代碼來選定列表中的選項(xiàng),例如List1.Selected(2)=True使得列表框List1中的第3條選項(xiàng)被選中。

(列表框名.Selected(索引值)=True)Text設(shè)置或返回列表中當(dāng)前選項(xiàng)的值。(最后一次選中的項(xiàng)目文本)表5-2常用列表框方法方法說明AddItem用來向列表框中添加數(shù)據(jù)(添加項(xiàng)目)列表框名.AddItem

項(xiàng)目字符串[,索引值]RemoveItem用來從列表框中刪除數(shù)據(jù)(刪除項(xiàng)目)列表框名.RemoveItem

索引值Clear清除列表框中的各項(xiàng)(清除項(xiàng)目)列表框名.Clear2.使用列表框顯示數(shù)據(jù)【例5-7】將例5-6中的文本框改為列表框(如圖5-16所示)。將窗體中的文本框換為列表框,無需修改列表框的屬性,只需修改命令按鈕的Click事件代碼:增加項(xiàng)目’使用列表框的AddItem方法PrivatesubCommand1_Click()List1.ClearForn=1001To1100Step2s=0Fori=2ToInt(Sqr(n))IfnModi=0Thens=1:ExitForEndIfNextIfs=0ThenList1.AddItemnNextEndSub項(xiàng)目內(nèi)容顯示選中項(xiàng)目操作PrivateSubList1_Click()Print"選中項(xiàng)目與索引值:";List1.Text;List1.ListIndexPrint"項(xiàng)目數(shù):";List1.ListCountEndSub刪除選中項(xiàng)目操作PrivateSubCommand2_Click()k=Val(InputBox("輸入索引值"))ClsPrint"刪除的項(xiàng)目內(nèi)容";List1.List(k)List1.RemoveItemkEndSub求“同構(gòu)數(shù)”【例5-8】“同構(gòu)數(shù)”是指這樣的整數(shù):它恰好出現(xiàn)在其平方數(shù)的右端,例如1和5就是這樣的數(shù)。試找出l~9999之間的全部“同構(gòu)數(shù)”(如圖5-17所示)。分析:l位同構(gòu)數(shù)n應(yīng)滿足條件:n=n^2Mod10,2位同構(gòu)數(shù)n應(yīng)滿足條件:n=n^2Modl00,3位同構(gòu)數(shù)n應(yīng)滿足條件:n=n^2MOd1000,4位同構(gòu)數(shù)n應(yīng)滿足條件:n=n^2MOd10000,流程圖如圖5-l8所示。窗體界面的設(shè)計(jì)參見圖5-17,Click事件代碼PrivateSubCommand1_Click()List1.ClearForn=1To9999SelectCasenCasen^2Mod10List1.AddItemFormat(n,"@@@@@")&Format(n^2,"@@@@@@@@@@")Casen^2Mod100List1.AddItemFormat(n,"@@@@@")&Format(n^2,"@@@@@@@@@@")Casen^2Mod1000List1.AddItemFormat(n,"@@@@@")&Format(n^2,"@@@@@@@@@@")Casen^2Mod10000List1.AddItemFormat(n,"@@@@@")&Format(n^2,"@@@@@@@@@@")EndSelectNextEndSub

【例5-9]小學(xué)生做加減法的算術(shù)練習(xí)程序。計(jì)算機(jī)連續(xù)地隨機(jī)給出兩位數(shù)的加減法算術(shù)題,要求學(xué)生回答,答對的打“”,答錯(cuò)的打“”。將做過的題目存放在列表框中備查,并隨時(shí)給出答題的正確率(如圖5-19所示)。分析:隨機(jī)函數(shù)Rnd返回一個(gè)[0,l)之間的隨機(jī)小數(shù),為了生成某個(gè)范圍內(nèi)的隨機(jī)整數(shù),可以使用公式:Int((最大值-最小值十1)*Rnd+最小值)其中,最大值和最小值為指定范圍中的最大、最小數(shù)。設(shè)計(jì)步驟如下:(1)建立應(yīng)用程序用戶界面。窗體設(shè)計(jì)器,首先增加一個(gè)標(biāo)簽Label1(顯示題目)、一個(gè)文本框Text1(輸入答案)、一個(gè)列表框List1(保存做過的題目)、一個(gè)命令按鈕Command1、一個(gè)圖像Image1以及一個(gè)框架Frame1。激活Frame1后,在其中增加兩個(gè)標(biāo)簽,(2)設(shè)置對象屬性,表5-3屬性的設(shè)置┌───┬──┬───┬───────┐│對象│屬性│屬性值│說明│├───┼──┼───┼───────┤│Form1│Tag│0.0│存放題目總數(shù)│├───┼──┼───┼───────┤│List1│Tag│0.0│存放答對的題數(shù)│└───┴──┴───┴───────┘(3)編寫代碼。出題部分由窗體的激活(Activate)事件代碼完成:PrivateSubForm_Activate()Randomize(Time)a=Int(10+90*Rnd)b=Int(10+90*Rnd)p=Int(2*Rnd)SelectCasepCase0Label1.Caption=a&"+"&b&“="Text1.Tag=a+b'將本題答案放入Text1.Tag中Case1Ifa<bThent=a:a=b:b=tLabel1.Caption=a&"-"&b&"="Text1.Tag=a-b'將本題答案放入Text1.Tag中EndSelectForm1.Tag=Form1.Tag+1Text1.SelStart=0Text1.Text=""EndSub答題部分由文本框的按住(KeyPress)事件代碼完成:PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13Thenfm="!@@@@@@@@@@@@@@"IfVal(Text1.Text)=Text1.TagThenItem=Format(Label1.Caption&Text1.Text,fm)&"D"List1.Tag=List1.Tag+1ElseItem=Format(Label1.Caption&Text1.Text,fm)&"X"EndIfList1.AddItemItem,0'將題目和回答插入到列表框中的第1項(xiàng)Label2.Caption="共"&Form1.Tag&"題,"&Chr(13)&"正確率為:"Label3.Caption=Format(List1.Tag/Form1.Tag,"#0.0#%")Form_Activate'調(diào)用出題代碼EndIfEndSub3.選擇和移動(dòng)數(shù)據(jù)【例5-10】利用循環(huán)結(jié)構(gòu)和列表框控件,設(shè)計(jì)的“選項(xiàng)移動(dòng)”窗體——指由兩個(gè)列表框和4個(gè)命令按鈕所構(gòu)成的窗口,在Windows中常見(圖5-21)。表5-4屬性設(shè)置對象屬性屬性值說明List1Multiselect0-None不能多項(xiàng)選擇Style1-Checkbox風(fēng)格List2Multiselect2-Extended擴(kuò)展多項(xiàng)選擇有錯(cuò)誤

說明:(1)列表框的Multiselect屬性決定了用戶是否能夠選擇多項(xiàng)數(shù)據(jù):Multiselect=0-None不能Multlselect=l-Simple簡單多重Multiselect=2-Extended擴(kuò)展多重(2)簡單或擴(kuò)展的多重選擇。簡單多選可以多次選擇多項(xiàng)選項(xiàng)(直接單擊鼠標(biāo)左鍵),擴(kuò)展多選允許用戶可以一次選擇相鄰的多項(xiàng)選項(xiàng)(Shift十單擊鼠標(biāo)左鍵)或逐條選擇不相鄰的多項(xiàng)選項(xiàng)(Ctrl十單擊鼠標(biāo)左鍵)(3)List1.Selected(i)=True表示列表框List1中的第i+1項(xiàng)選項(xiàng)被選中。(4)List1.List(i)表示列表框List1中第i+1項(xiàng)的值。(2)編寫事件代碼。編寫窗體的讀入(Load)事件代碼:PrivateSubForm_Load()List1.AddItem"電冰箱"List1.AddItem"洗衣機(jī)"List1.AddItem"彩色電視機(jī)"List1.AddItem"組合音響"List1.AddItem"影碟機(jī)"List1.AddItem"電水壺"List1.AddItem"飲水機(jī)"List1.AddItem"微波爐"List1.AddItem"照相機(jī)"EndSub編寫命令按鈕的Click事件代碼:右側(cè)List2增加List1所選項(xiàng)(部分增)PrivateSubCommand1_Click()i=0DoWhilei<List1.ListCountIfList1.Selected(i)=TrueThenList2.AddItemList1.List(i)List1.RemoveItemiElsei=i+1EndIfLoopEndSubi<=List1.ListCount-1右側(cè)List2增加全部List1項(xiàng)(全部增)PrivateSubCommand2_Click()Fori=0ToList1.ListCount-1List2.AddItemList1.List(i)NextiList1.ClearEndSub右側(cè)List2增加全部List1項(xiàng)(全部增)

PrivateSubCommand2_Click()

Fori=0ToList1.ListCount-1

List2.AddItemList1.List(i)

Nexti

List1.Clear

EndSub

右側(cè)List2刪除本身所選項(xiàng)(部分刪)PrivateSubCommand3_Click()i=0DoWhilei<List2.ListCount

IfList2.Selected(i)=TrueThenList1.AddItemList2.List(i)List2.RemoveItemiElsei=i+1EndIfLoopEndSub右側(cè)List2刪除本身全部項(xiàng)(全部刪)PrivateSubCommand4_Click()Fori=0ToList2.ListCount-1List1.AddItemList2.List(i)NextiList2.ClearEndSub5.4.2組合框

(ComboBox)文本框+列表框:兼有TextBox和ListBox兩者的功能,有3種形式的組合框:更改控件的Style屬性下拉組合框:Style屬性為0-DropdownCombo默認(rèn)值將文本框和下拉列表框組合在一起,用戶從中列表框選擇一個(gè)選項(xiàng),該選項(xiàng)就會進(jìn)入文本框。簡單組合框:Style屬性為l-SimpleCombo上面文本框與下面列表框(總是被顯示)簡單地組合在一起,注意使用時(shí)拖動(dòng)開下拉列表框:Style屬性為2-DropdownList一般只能看到一個(gè)選項(xiàng),用戶可以通過單擊向下按鈕可顯示可滾動(dòng)的下拉列表框。1.下拉列表框DropdownCombo【例5-11】將例5-9算術(shù)練習(xí)中的列表框改為組合框(下拉列表框),如圖5-22對象屬性見表5-5。

┌───┬───┬─────────┬───────┐│對象│屬性│屬性值│說明│├───┼───┼─────────┼───────┤│Combo1│Style│2-DropdownList│下拉列表框││├───┼─────────┼───────┤││Tag│0.0│存放答對的題數(shù)│└───┴───┴─────────┴───────┘另外,增加一個(gè)命令按鈕(重置)Command2。(3)編寫代碼。出題部分由窗體的激活(Activate)事件代碼完成:PrivateSubForm_Activate()Randomize(Time)a=Int(10+90*Rnd)b=Int(10+90*Rnd)p=Int(2*Rnd)SelectCasepCase0Label1.Caption=a&"+"&b&“="Text1.Tag=a+b'將本題答案放入Text1.Tag中Case1Ifa<bThent=a:a=b:b=tLabel1.Caption=a&"-"&b&"="Text1.Tag=a-b'將本題答案放入Text1.Tag中EndSelectForm1.Tag=Form1.Tag+1Text1.SelStart=0Text1.Text=""EndSub[10~99]Rnd[0,1)*90Int+10

修改文本框Text1的按?。↘eyPress)事件代碼:PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13Thenfm="!@@@@@@@@@@@@@@"IfVal(Text1.Text)=Text1.TagThenItem=Format(Label1.Caption&Text1.Text,fm)&"√"Combo1.Tag=Combo1.Tag+1ElseItem=Format(Label1.Caption&Text1.Text,fm)&"×"EndIf

Combo1.AddItemItem,0Combo1.ListIndex=0Label2.Caption="共"&Form1.Tag&"題,"&Chr(13)&"正確率為:"Label3.Caption=Format(Combo1.Tag/Form1.Tag,"#0.0#%")Form_ActivateEndIfEndSub編寫命令按鈕Command2的Click代碼:PrivateSubCommand2_Click()Form1.Tag=0#Combo1.Tag=0#Combo1.ClearLabel3.Caption="歡迎重新開始!"Label2.Caption=""Form_ActivateText1.SetFocusEndSub其他代碼同例5-9。修改ComboBox1的Style屬性l-SimpleCombo(簡單組合框):0-DropdownCombo(下拉組合框):2.簡單組合框SimpleCombo簡單組合框中的列表框總是被顯示出來,比列表框多了一個(gè)文本框可供輸入?!纠?-12】“簡易抽獎(jiǎng)機(jī)”。在組合框中輸入號碼,按“開始”按鈕可以得到中獎(jiǎng)的號碼(如圖5-23所示)。2.簡單組合框SimpleCombo【例5-12】“簡易抽獎(jiǎng)機(jī)”。設(shè)計(jì)步驟如下:(1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性。選擇“新建”工程,進(jìn)入窗體設(shè)計(jì)器,首先增加一個(gè)用作容器的框架Frame1,選中Frame1,在其中增加一個(gè)組合框Combo1、一個(gè)標(biāo)簽Label1和一個(gè)命令按鈕Command1。將Combo1的Style屬性改為:l-SimpleCombo,其他屬性的設(shè)置參見圖5-24。

編寫組合框Combo1的按鍵(KeyPress)事件代碼:PrivateSubCombo1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenCombo1.AddItemCombo1.Text,0Combo1.SelStart=0Combo1.SelLength=Len(Combo1.Text)EndIfIfKeyAscii=27Then’按(Esc)鍵后,移去選項(xiàng)IfCombo1.ListIndex<>-1ThenCombo1.RemoveItemCombo1.ListIndexEndIfEndIfEndSub編寫命令按鈕Command1的Click事件代碼,使之可以隨機(jī)地抽取獎(jiǎng)號:PrivateSubCommand1_Click()Randomizen=Combo1.ListCounta=Int(Rnd*n)Combo1.ListIndex=aMsgBox"中獎(jiǎng)的號碼是:"&Chr(13)&Combo1.Text,0,"恭喜!"EndSub3.下拉組合框DropdownList下拉組合框看起來像是在標(biāo)準(zhǔn)的文本框右邊加了個(gè)下拉箭頭,用鼠標(biāo)單擊該箭頭就在文本框下打開一個(gè)列表。用戶從中選擇一個(gè)選項(xiàng),該選項(xiàng)就會進(jìn)入文本框?!纠?-13】在例5-12中使用下拉組合框,可以更加節(jié)省空間(如圖5-25所示)。設(shè)計(jì)步驟如下:(1)窗體設(shè)計(jì)器首先增加一個(gè)用作容器的框架Frame1,選中Frame1,在其中增加一個(gè)組合框Combo1,一個(gè)文本框Text1,兩個(gè)標(biāo)簽Label1、Label2,一個(gè)命令按鈕Command1和一個(gè)圖像控件Image1。組合框的屬性取默認(rèn)值,

編寫組合框Combo1的按鍵(KeyPress)事件代碼:PrivateSubCombo1_(KeyAsciiAsInteger)IfKeyAscii=13ThenCombo1.AddItemCombo1.Text,0Combo1.SelStart=0Combo1.SelLength=Len(Combo1.Text)Text1.Text=Combo1.ListCountEndIfIfKeyAscii=27ThenIfCombo1.ListIndex<>-lThenCombo1.RemoveItemCombo1.ListIndexText1.Text=Combo1.ListCountEndIfEndIfEndSub算法舉例-5-14水仙花數(shù)AlgorithmExamples【例5-14】“水仙花數(shù)”是指一個(gè)3位整數(shù),其各位數(shù)字的立方和等于該數(shù)本身,如:153=13+53+33

編寫程序,輸出所有的“水仙花數(shù)”,如圖5-26所示。分析:此題的關(guān)鍵是把任意3位數(shù)的每一位數(shù)分離出來。設(shè)a,b,c分別是3位整數(shù)n的百位數(shù)、十位數(shù)、個(gè)位數(shù),則a=Int(n/l00)或n\100b=Int((n-a*l00)/l0)或n\10Mod10或(nMod100)\10c=n-a*l00-b*l0或nMod10命令按鈕的Click事件代碼:PrivateSubCommand1_Click()DimpAsIntegerList1.ClearForn=100To999 a=Int(n/100) b=Int((n-a*100)/10) c=n-(a*100+b*10) p=a^3+b^3+c^3 Ifp=nThenList1.AddItempNextEndSubIfn=a^3+b^3+c^3ThenList1.AddItemn5-15趣味數(shù)學(xué)題【例5-15】馬克思曾經(jīng)做過趣味數(shù)學(xué)題:有30個(gè)人在一家小飯館里用餐,其中有男人、女人和小孩。每個(gè)男人花了3先令,每個(gè)女人花了2先令,每個(gè)小孩花了1先令,一共花去50先令。問男人、女人以及小孩各有幾人?如圖5-28所示。分析:設(shè)有x個(gè)男人,y個(gè)女人,z個(gè)小孩。列出方程組x+y+z=303x+2y+z=50窮舉法:將各種可能的x、y、z組合一一進(jìn)行測試,x從1到16:最多只能有16個(gè)男人,y從1到24:最多只能有24個(gè)女人,Z=30-x-y如果3*X+2*y+Z=50命令按鈕的Click事件代碼:PrivateSubCommand1_Click()List1.ClearForx=1To16Fory=1To24z=30-x-yIf3*x+2*y+z=50Thenp=Format(x,"@@@")&Format(y,"@@@@@")&Format(z,"@@@@@")List1.AddItempEndIfNextNextEndSub作業(yè)2例題5-7、5-9、5-10、5-11、5-14、5-15習(xí)題五xt5-6、xt5-8~xt5-10、xt5-13~xt5-16作業(yè)例題5-1、5-4~5-7、5-9、5-10、5-11、5-14、5-15選作5-2、5-3習(xí)題五xt5-1~xt5-4、xt5-6、xt5-8~xt5-10、xt5-13~xt5-16選做xt5-5xt5-1xt5-1編寫程序,計(jì)算2+4+6+…+100之和xt5-2人口增長問題xt5-2我國在有人口13億,設(shè)年增長率為1%,編寫程序,計(jì)算多少年后增加到20億xt5-3數(shù)字金字塔xt5-3數(shù)字金字塔。編寫程序,打印如圖5-26所示的“數(shù)字金字塔”。xt5-3數(shù)字金字塔-每行相同數(shù)字如果做原xt5-3有困難,可做下題。xt5-3數(shù)字金字塔-每行相同數(shù)字。編寫程序,打印如圖所示的“數(shù)字金字塔”(提示每行數(shù)字與行值都相同)。xt5-4勾股定理xt5-4勾股定理中3個(gè)數(shù)的關(guān)系是:a2+b2=c2。編寫程序,輸出20以內(nèi)滿足此關(guān)系的整數(shù)組合(如圖5-27所示),例如3、4、5就是一個(gè)整數(shù)組合。xt5-5完全數(shù)選作xt5-5“完備數(shù)”是指一個(gè)數(shù)恰好等于它的因子之和,如6的因子為1、2、3,而6=1+2+3,因而6就是完數(shù)。編制程序,找出2~1000之間的全部“完備數(shù)”。xt5-6乘積表xt5-6編寫程序,打出如圖5-29所示的乘積表xt5-8s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)xt5-8設(shè)計(jì)程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。xt5-9xt5-9設(shè)s=1×2×3×…×n,求s不大于400000時(shí)最大的n?;蛳裼覀?cè)簡單界面xt5-10xt5-10設(shè)s=11×22×33×…×nn,求s不大于400000時(shí)最大的n。

或像右側(cè)簡單界面xt5-13百錢買百雞xt5-13我國古代數(shù)學(xué)家張丘建在“算經(jīng)”里提出一個(gè)世界數(shù)學(xué)史上有名的百雞問題:雞翁一,值錢五,雞母一,值錢三,雞雛一,值錢一,百錢買百雞,問雞翁、母、雛各幾何?xt5-14計(jì)算ext5-14利用ex的下述近似公式計(jì)算e(直到最后一項(xiàng)小于10-6為止)。xt5-15平行四邊形xt5-15平行四邊形。編程序在窗體上輸出的圖形如圖所示。xt5-16倒立、正立直角三角形xt5-16倒立、正立直角三角形。編程序在窗體上輸出的

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論