33枚舉算法及程序?qū)崿F(xiàn)課件2_第1頁
33枚舉算法及程序?qū)崿F(xiàn)課件2_第2頁
33枚舉算法及程序?qū)崿F(xiàn)課件2_第3頁
33枚舉算法及程序?qū)崿F(xiàn)課件2_第4頁
33枚舉算法及程序?qū)崿F(xiàn)課件2_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1.雙重循環(huán):某些枚舉算法的問題比較復(fù)雜,需要通過復(fù)雜的雙重循環(huán)來實(shí)現(xiàn)。雙重循環(huán)就是循環(huán)的嵌套,在一層循環(huán)結(jié)構(gòu)內(nèi)部又是另一層循環(huán),其結(jié)構(gòu)如下所示:Fori=…語句塊

Forj=…語句塊

NextjNexti3.3枚舉算法及程序?qū)崿F(xiàn)(2)1.雙重循環(huán):某些枚舉算法的問題比較復(fù)雜,需要通過復(fù)雜的雙重此結(jié)構(gòu)由兩個(gè)For循環(huán)構(gòu)成,外循環(huán)是循環(huán)變量為i的循環(huán),內(nèi)循環(huán)是循環(huán)變量為j的循環(huán),這兩個(gè)循環(huán)之間的關(guān)系是嵌套關(guān)系,循環(huán)變量為i的循環(huán)將循環(huán)變量為j的循環(huán)包含在內(nèi),在循環(huán)執(zhí)行時(shí),外循環(huán)變量i每變化一次,都要執(zhí)行一次完整的內(nèi)循環(huán)。在枚舉算法中,有很多時(shí)候用到循環(huán)的嵌套來解決問題。此結(jié)構(gòu)由兩個(gè)For循環(huán)構(gòu)成,外循環(huán)是循環(huán)變量為i的循環(huán),內(nèi)循2.循環(huán)嵌套:循環(huán)嵌套的層數(shù)沒有具體限定,選考時(shí)的多重循環(huán)結(jié)構(gòu)一般只要求到雙重循環(huán)。多重循環(huán)在使用時(shí),每個(gè)循環(huán)必須只有一個(gè)唯一的變量名作為循環(huán)變量;在Next語句結(jié)束循環(huán)時(shí),必須內(nèi)循環(huán)先結(jié)束,不得出現(xiàn)互相交叉。3.編寫枚舉算法的程序要注意兩個(gè)要點(diǎn):①For循環(huán)的范圍要盡可能的小,這決定可能解的范圍是否已經(jīng)盡可能的??;②條件表達(dá)式必須要正確無誤,這決定哪些解才是真正的解。2.循環(huán)嵌套:循環(huán)嵌套的層數(shù)沒有具體限定,選考時(shí)的多重循環(huán)結(jié)4.素?cái)?shù)問題①素?cái)?shù)的概念素?cái)?shù)(質(zhì)數(shù))就是一個(gè)大于等于2的整數(shù),并且只能被1和本身整除,而不能被其他整數(shù)整除的數(shù)。②算法說明判別某數(shù)n是否是素?cái)?shù)的經(jīng)典算法是,對于n,從i=2,3,4,……,n-1依次判別能否被i整除,只要有一個(gè)能整除,n就不是素?cái)?shù),否則n是素?cái)?shù)。4.素?cái)?shù)問題③代碼實(shí)現(xiàn)Functionsushu(nAsLong)AsBoolean

'定義素?cái)?shù)函數(shù)

DimiAsLongFori=2Ton-1

If(nModi)=0ThenExitForNexti

Ifi=nthensushu=TrueEndFunction③代碼實(shí)現(xiàn)5.最大公約數(shù)問題①最大公約數(shù):就是幾個(gè)數(shù)共同最大的約數(shù)。②算法說明:用輾轉(zhuǎn)相除法求兩自然數(shù)m、n的最大公約數(shù),再由最大公約數(shù)求出最小公倍數(shù)。㈠首先,對于已知兩數(shù)m、n,比較并使得m>n;㈡m除以n得余數(shù)r;㈢若r=0,則n為求得的最大公約數(shù),算法結(jié)束;否則執(zhí)行步驟㈣;㈣使m=n,n=r再重復(fù)執(zhí)行㈡。5.最大公約數(shù)問題③代碼實(shí)現(xiàn):Functiongcd(mAsLong,nAsLong)AsLongDimtempAsLongIfm<nThentemp=m:m=n:n=tempDimrAsLongDowhile

r=mModn

Ifr=0ThenExitDo

m=n

n=rLoopgcd=nEndFunction③代碼實(shí)現(xiàn):本節(jié)課學(xué)習(xí)多重循環(huán)的程序?qū)崿F(xiàn)方法,難點(diǎn)是理解內(nèi)循環(huán)與外循環(huán)的概念,并能根據(jù)算法編寫簡單的多重循環(huán)代碼。掌握常見素?cái)?shù)問題算法與最大公約數(shù)問題算法??疾榉绞綖檫x擇題與填空題。本節(jié)課學(xué)習(xí)多重循環(huán)的程序?qū)崿F(xiàn)方法,難點(diǎn)是理解內(nèi)循環(huán)與外循環(huán)的有如下VB程序段:Fori=0to3

Forj=5to1Step-1Ifi*j>7Thens=i*j

NextjNexti則語句s=i*j的執(zhí)行次數(shù)是 (

)A.15 B.4 C.5 D.20C有如下VB程序段:C2.某工廠購入100千克原材料,每4千克原材料可以生產(chǎn)一件A產(chǎn)品,每5千克原材料可以生產(chǎn)一件B產(chǎn)品。下列VB程序的功能是:計(jì)算恰好用盡這些原材料時(shí),生產(chǎn)A產(chǎn)品和B產(chǎn)品數(shù)量的各種可能,并在列表框中輸出。2.某工廠購入100千克原材料,每4千克原材料可以生產(chǎn)一件PrivateSubCommand1_Click()

DimxAsInteger,yAsInteger

'x、y分別為A、B產(chǎn)品的數(shù)量

Forx=0To25Fory=0To20

If①Then

List1.AddItem“A產(chǎn)品”+Str(x)+“件,”+“B產(chǎn)品”+Str(y)+“件”

EndIf

NextxEndSub請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入______________________________________________。(2)劃線②處應(yīng)填入______________________________________________。(x*4+y*5)=100NextyPrivateSubCommand1_Click()(x3.一個(gè)十進(jìn)制數(shù)的二進(jìn)制表示中,如果數(shù)字“1”的個(gè)數(shù)多于數(shù)字“0”的個(gè)數(shù),則稱該整數(shù)為A類數(shù)。如十進(jìn)制整數(shù)26的二進(jìn)制表示為11010,26是一個(gè)A類數(shù)。下列VB程序的功能是:統(tǒng)計(jì)前1000個(gè)自然數(shù)中A類數(shù)的個(gè)數(shù),并在文本框Text1中輸出。3.一個(gè)十進(jìn)制數(shù)的二進(jìn)制表示中,如果數(shù)字“1”的個(gè)數(shù)多于數(shù)字PrivateSubCommand1_Click()

DimiAsInteger,nAsInteger

DimsAsInteger

's為A類數(shù)的個(gè)數(shù)

DimtAsInteger

't為二進(jìn)制數(shù)中的“1”的個(gè)數(shù)

DimkAsInteger

'k為二進(jìn)制數(shù)中的“0”的個(gè)數(shù)

s=0

Fori=1To①n=i:t=0:k=0DoWhilen>0

IfnMod2=1Thent=t+1elsek=k+l

n=n\2LoopIf②Thens=s+1

Nexti

Text1.Text=Str(s)EndSub

請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入________。(2)劃線②處應(yīng)填入__________。1000t>kPrivateSubCommand1_Click()104.尋找勾股數(shù):“勾股數(shù)”是指滿足勾股定理關(guān)系的一組數(shù),也就是直角三角形三邊長恰好都取整數(shù)的特殊情況。3、4、5就是一組勾股數(shù)32+42=52。請編程實(shí)現(xiàn)30以內(nèi)能夠組成勾股數(shù)的整數(shù)組及組數(shù)。該程序運(yùn)行界面如下圖所示:4.尋找勾股數(shù):“勾股數(shù)”是指滿足勾股定理關(guān)系的一組數(shù),也就程序代碼如下:PrivateSubCommand1_Click()

DimaAsInteger,bAsInteger,cAsSingle

DimsAsInteger

s=0

Fora=1To30Forb=a+1To30

c=①

If

②Then

s=s+1

List1.AddItem(Str(a)+Str(b)+Str(c))

EndIfNextb

Nexta

Label1.Caption=“共找到”+Str(s)+“勾股數(shù)?!盓ndSub請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入______________。(2)劃線②處應(yīng)填入_______________________。注:該示例程序在素材文件夾下vb18文件夾中。Sqr(a^2+b^2)c=Int(c)Andc<=30程序代碼如下:Sqr(a^2+b^2)c=Int(c)An設(shè)計(jì)一個(gè)VB程序,求100以內(nèi)所有素?cái)?shù)的和。該程序運(yùn)行后界面如下:點(diǎn)擊“找素?cái)?shù)”按鈕Command1,在列表框List1中顯示所有100以內(nèi)的素?cái)?shù),并在標(biāo)簽Label1中顯示所有素?cái)?shù)的和。設(shè)計(jì)一個(gè)VB程序,求100以內(nèi)所有素?cái)?shù)的和。該程序運(yùn)行后界面程序代碼如下:PrivateSubCommand1_Click()

DimnAsInteger

DimiAsInteger

DimsumAsInteger

s=0

Forn=1To100For①

If(nModi)=0ThenExitForNextiIfi=nThen

List1.AddItemn

②EndIf

Nextn

Label1.Caption=“所有的素?cái)?shù)和為”+Str(sum)EndSub請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入____________。(2)劃線②處應(yīng)填入_________________。sum=sum+ni=2ton-1程序代碼如下:sum=sum+ni=2ton-1某電視臺的直播節(jié)目結(jié)束后,主持人從參與短信投票的觀眾中抽取若干名幸運(yùn)觀眾。假設(shè)共有500名觀眾參與短信投票,抽獎程序的部分VB代碼如下,程序運(yùn)行時(shí)界面如圖所示。主持人在文本框Text1中輸入幸運(yùn)觀眾數(shù)量后,單擊“開始”按鈕Command1,在列表框List1中顯示幸運(yùn)觀眾的手機(jī)號碼。請?jiān)趧澗€處填入合適的代碼。某電視臺的直播節(jié)目結(jié)束后,主持人從參與短信投票的觀眾中抽取若Dima(1To500)AsString

'參與短信投票觀眾的手機(jī)號碼 'Form_load過程用于將參與短信投票觀眾的手機(jī)號碼存放到數(shù)組a中PrivateSubForm_Load() '該過程代碼略EndSubPrivateSubCommand1_Click()

DimnAsInteger

'幸運(yùn)觀眾的數(shù)量

DimtAsInteger

'幸運(yùn)觀眾的序號

DimiAsInteger

Randomize

(1)

List1.Clear

Fori=1Ton t=Int(Rnd*500)+1 DoWhile____(2)____=True

t=Int(Rnd*500)+1 Loop List1.AddltemMid(a(t),1,3)+“****”+Mid(a(t),8,4) NextiEndSubDima(1To500)AsString'參與 'check函數(shù)用于判斷隨機(jī)產(chǎn)生的幸運(yùn)觀眾的序號是否重復(fù)PrivateFunctioncheck(tAsInteger)AsBoolean '函數(shù)值為True表示序號重復(fù) '該函數(shù)代碼略EndFunction請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入_____________________________。(2)劃線②處應(yīng)填入_____________________________。n=Val(Text1.text)Check(t) 'check函數(shù)用于判斷隨機(jī)產(chǎn)生的幸運(yùn)觀眾的序號是否重復(fù)n將一張100元的鈔票兌換成面值為20元、10元和5元的鈔票,要求每種至少有1張,共有多少中不同的換法?程序運(yùn)行時(shí)的界面如下所示,點(diǎn)擊“計(jì)算方案”按鈕Command1,在列表框List1中顯示詳細(xì)的兌換方案列表,同時(shí)在標(biāo)簽Label1中顯示兌換方案的總數(shù)。將一張100元的鈔票兌換成面值為20元、10元和5元的鈔票,程序代碼如下所示:PrivateSubCommand1_Click()DimaAsInteger

'存儲20元張面值張數(shù)DimbAsInteger

'存儲10元張面值張數(shù)DimcAsInteger

'存儲5元張面值張數(shù)DimiAsInteger

'存儲兌換方案數(shù)i=0Fora=____①____

Forb=1To9Forc=1To19

If____②____Then

i=i+1

List1.AddItem”第”+Str(i)+”種方案:”+Str(a)+”*20+”+Str(b)+”*10+”+Str(c)+”*5”

EndIfNextc

NextbNextaLabel1.Caption=”共有”+Str(i)+”種兌換方案?!盓ndSub請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入_______。(2)劃線②處應(yīng)填入_____________________。注:該示例程序在素材文件夾下vb20文件夾中。1to4a*20+b*10+c*5=100程序代碼如下所示:1to4a*20+b*10+c*5=1在1000個(gè)奇自然數(shù)中,計(jì)算恰好有三位為1的二進(jìn)制數(shù)的個(gè)數(shù)(例如19對應(yīng)的二進(jìn)制數(shù)10011,是一個(gè)符合題目要求的數(shù)字,而23對應(yīng)的10111,則不符合本題目的要求)。

解決此問題的算法如下:

計(jì)數(shù)器c的初值置為0在1000個(gè)奇自然數(shù)中,計(jì)算恰好有三位為1的二進(jìn)制數(shù)的個(gè)數(shù)( Fori=1To1000計(jì)算第i個(gè)奇數(shù)j:j=2]'使用除2取余法將j化成為二進(jìn)制數(shù),并統(tǒng)計(jì)其中1的位數(shù)w計(jì)數(shù)器w的初值置為0

Dowhilej>0

計(jì)算j除以2的余數(shù)n If余數(shù)n是1Thenw=w+1 j的值縮小1/2

Loop

Ifw=3Thenc=c+1輸出j輸出j的二進(jìn)制編碼

EndifNexti Fori=1To1000程序運(yùn)行界面如下:程序運(yùn)行界面如下:相應(yīng)的VB程序如下:PrivateSubCommand1_Click()DimcAsInteger,iAsInteger,jAsInteger,wAsInteger,nAsIntegerDimsAsStringList1.Clearc=0Fori=1To1000j=2*i-1w=0s=“”DoWhilej>0

'(1)

Ifn=1Thenw=w+1

'(2)

s=s+Str(n)LoopIfw=3Then

c=c+1

List1.AddItemStr((2*i-1))+“:”+sEndIfNextiLabel1.Caption=“個(gè)數(shù):”+Str(c)EndSubN=j\2j=j\2相應(yīng)的VB程序如下:N=j\2j=j\2程序加框處代碼有錯(cuò),請改正。(1)加框處①有錯(cuò),應(yīng)改為____________________。(2)加框處②有錯(cuò),應(yīng)改為____________________。注:該示例程序在素材文件夾下vb21文件夾中。n=jMod2j=j\2程序加框處代碼有錯(cuò),請改正。n=jMod2j=j\2求兩數(shù)最大公約數(shù)的VB程序代碼如下:Functiongcd(mAsLong,nAsLong)AsLongDimtempAsLongIfm<nThentemp=m:m=n:n=tempDimrAsLongDo

r=mModn

Ifr=0ThenExitDom=nn=rLoopgcd=nEndFunctionPrivateSubCommand1_Click()DimmAsLong,nAsLongDimrAsLongm=Val(InputBox(“請輸入第1個(gè)數(shù)”))n=Val(InputBox(“請輸入第2個(gè)數(shù)”))r=____________________________MsgBox“兩數(shù)最大公約數(shù)為”+Str(r)EndSub求兩數(shù)最大公約數(shù)的VB程序代碼如下:(1)該程序采用的算法是______________。(2)代碼中劃線處應(yīng)填入______________。注:該示例程序在素材文件下vb22文件夾中。gcd(m,n)輾轉(zhuǎn)相除法(1)該程序采用的算法是______________。gcd1.雙重循環(huán):某些枚舉算法的問題比較復(fù)雜,需要通過復(fù)雜的雙重循環(huán)來實(shí)現(xiàn)。雙重循環(huán)就是循環(huán)的嵌套,在一層循環(huán)結(jié)構(gòu)內(nèi)部又是另一層循環(huán),其結(jié)構(gòu)如下所示:Fori=…語句塊

Forj=…語句塊

NextjNexti3.3枚舉算法及程序?qū)崿F(xiàn)(2)1.雙重循環(huán):某些枚舉算法的問題比較復(fù)雜,需要通過復(fù)雜的雙重此結(jié)構(gòu)由兩個(gè)For循環(huán)構(gòu)成,外循環(huán)是循環(huán)變量為i的循環(huán),內(nèi)循環(huán)是循環(huán)變量為j的循環(huán),這兩個(gè)循環(huán)之間的關(guān)系是嵌套關(guān)系,循環(huán)變量為i的循環(huán)將循環(huán)變量為j的循環(huán)包含在內(nèi),在循環(huán)執(zhí)行時(shí),外循環(huán)變量i每變化一次,都要執(zhí)行一次完整的內(nèi)循環(huán)。在枚舉算法中,有很多時(shí)候用到循環(huán)的嵌套來解決問題。此結(jié)構(gòu)由兩個(gè)For循環(huán)構(gòu)成,外循環(huán)是循環(huán)變量為i的循環(huán),內(nèi)循2.循環(huán)嵌套:循環(huán)嵌套的層數(shù)沒有具體限定,選考時(shí)的多重循環(huán)結(jié)構(gòu)一般只要求到雙重循環(huán)。多重循環(huán)在使用時(shí),每個(gè)循環(huán)必須只有一個(gè)唯一的變量名作為循環(huán)變量;在Next語句結(jié)束循環(huán)時(shí),必須內(nèi)循環(huán)先結(jié)束,不得出現(xiàn)互相交叉。3.編寫枚舉算法的程序要注意兩個(gè)要點(diǎn):①For循環(huán)的范圍要盡可能的小,這決定可能解的范圍是否已經(jīng)盡可能的??;②條件表達(dá)式必須要正確無誤,這決定哪些解才是真正的解。2.循環(huán)嵌套:循環(huán)嵌套的層數(shù)沒有具體限定,選考時(shí)的多重循環(huán)結(jié)4.素?cái)?shù)問題①素?cái)?shù)的概念素?cái)?shù)(質(zhì)數(shù))就是一個(gè)大于等于2的整數(shù),并且只能被1和本身整除,而不能被其他整數(shù)整除的數(shù)。②算法說明判別某數(shù)n是否是素?cái)?shù)的經(jīng)典算法是,對于n,從i=2,3,4,……,n-1依次判別能否被i整除,只要有一個(gè)能整除,n就不是素?cái)?shù),否則n是素?cái)?shù)。4.素?cái)?shù)問題③代碼實(shí)現(xiàn)Functionsushu(nAsLong)AsBoolean

'定義素?cái)?shù)函數(shù)

DimiAsLongFori=2Ton-1

If(nModi)=0ThenExitForNexti

Ifi=nthensushu=TrueEndFunction③代碼實(shí)現(xiàn)5.最大公約數(shù)問題①最大公約數(shù):就是幾個(gè)數(shù)共同最大的約數(shù)。②算法說明:用輾轉(zhuǎn)相除法求兩自然數(shù)m、n的最大公約數(shù),再由最大公約數(shù)求出最小公倍數(shù)。㈠首先,對于已知兩數(shù)m、n,比較并使得m>n;㈡m除以n得余數(shù)r;㈢若r=0,則n為求得的最大公約數(shù),算法結(jié)束;否則執(zhí)行步驟㈣;㈣使m=n,n=r再重復(fù)執(zhí)行㈡。5.最大公約數(shù)問題③代碼實(shí)現(xiàn):Functiongcd(mAsLong,nAsLong)AsLongDimtempAsLongIfm<nThentemp=m:m=n:n=tempDimrAsLongDowhile

r=mModn

Ifr=0ThenExitDo

m=n

n=rLoopgcd=nEndFunction③代碼實(shí)現(xiàn):本節(jié)課學(xué)習(xí)多重循環(huán)的程序?qū)崿F(xiàn)方法,難點(diǎn)是理解內(nèi)循環(huán)與外循環(huán)的概念,并能根據(jù)算法編寫簡單的多重循環(huán)代碼。掌握常見素?cái)?shù)問題算法與最大公約數(shù)問題算法。考查方式為選擇題與填空題。本節(jié)課學(xué)習(xí)多重循環(huán)的程序?qū)崿F(xiàn)方法,難點(diǎn)是理解內(nèi)循環(huán)與外循環(huán)的有如下VB程序段:Fori=0to3

Forj=5to1Step-1Ifi*j>7Thens=i*j

NextjNexti則語句s=i*j的執(zhí)行次數(shù)是 (

)A.15 B.4 C.5 D.20C有如下VB程序段:C2.某工廠購入100千克原材料,每4千克原材料可以生產(chǎn)一件A產(chǎn)品,每5千克原材料可以生產(chǎn)一件B產(chǎn)品。下列VB程序的功能是:計(jì)算恰好用盡這些原材料時(shí),生產(chǎn)A產(chǎn)品和B產(chǎn)品數(shù)量的各種可能,并在列表框中輸出。2.某工廠購入100千克原材料,每4千克原材料可以生產(chǎn)一件PrivateSubCommand1_Click()

DimxAsInteger,yAsInteger

'x、y分別為A、B產(chǎn)品的數(shù)量

Forx=0To25Fory=0To20

If①Then

List1.AddItem“A產(chǎn)品”+Str(x)+“件,”+“B產(chǎn)品”+Str(y)+“件”

EndIf

NextxEndSub請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入______________________________________________。(2)劃線②處應(yīng)填入______________________________________________。(x*4+y*5)=100NextyPrivateSubCommand1_Click()(x3.一個(gè)十進(jìn)制數(shù)的二進(jìn)制表示中,如果數(shù)字“1”的個(gè)數(shù)多于數(shù)字“0”的個(gè)數(shù),則稱該整數(shù)為A類數(shù)。如十進(jìn)制整數(shù)26的二進(jìn)制表示為11010,26是一個(gè)A類數(shù)。下列VB程序的功能是:統(tǒng)計(jì)前1000個(gè)自然數(shù)中A類數(shù)的個(gè)數(shù),并在文本框Text1中輸出。3.一個(gè)十進(jìn)制數(shù)的二進(jìn)制表示中,如果數(shù)字“1”的個(gè)數(shù)多于數(shù)字PrivateSubCommand1_Click()

DimiAsInteger,nAsInteger

DimsAsInteger

's為A類數(shù)的個(gè)數(shù)

DimtAsInteger

't為二進(jìn)制數(shù)中的“1”的個(gè)數(shù)

DimkAsInteger

'k為二進(jìn)制數(shù)中的“0”的個(gè)數(shù)

s=0

Fori=1To①n=i:t=0:k=0DoWhilen>0

IfnMod2=1Thent=t+1elsek=k+l

n=n\2LoopIf②Thens=s+1

Nexti

Text1.Text=Str(s)EndSub

請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入________。(2)劃線②處應(yīng)填入__________。1000t>kPrivateSubCommand1_Click()104.尋找勾股數(shù):“勾股數(shù)”是指滿足勾股定理關(guān)系的一組數(shù),也就是直角三角形三邊長恰好都取整數(shù)的特殊情況。3、4、5就是一組勾股數(shù)32+42=52。請編程實(shí)現(xiàn)30以內(nèi)能夠組成勾股數(shù)的整數(shù)組及組數(shù)。該程序運(yùn)行界面如下圖所示:4.尋找勾股數(shù):“勾股數(shù)”是指滿足勾股定理關(guān)系的一組數(shù),也就程序代碼如下:PrivateSubCommand1_Click()

DimaAsInteger,bAsInteger,cAsSingle

DimsAsInteger

s=0

Fora=1To30Forb=a+1To30

c=①

If

②Then

s=s+1

List1.AddItem(Str(a)+Str(b)+Str(c))

EndIfNextb

Nexta

Label1.Caption=“共找到”+Str(s)+“勾股數(shù)?!盓ndSub請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入______________。(2)劃線②處應(yīng)填入_______________________。注:該示例程序在素材文件夾下vb18文件夾中。Sqr(a^2+b^2)c=Int(c)Andc<=30程序代碼如下:Sqr(a^2+b^2)c=Int(c)An設(shè)計(jì)一個(gè)VB程序,求100以內(nèi)所有素?cái)?shù)的和。該程序運(yùn)行后界面如下:點(diǎn)擊“找素?cái)?shù)”按鈕Command1,在列表框List1中顯示所有100以內(nèi)的素?cái)?shù),并在標(biāo)簽Label1中顯示所有素?cái)?shù)的和。設(shè)計(jì)一個(gè)VB程序,求100以內(nèi)所有素?cái)?shù)的和。該程序運(yùn)行后界面程序代碼如下:PrivateSubCommand1_Click()

DimnAsInteger

DimiAsInteger

DimsumAsInteger

s=0

Forn=1To100For①

If(nModi)=0ThenExitForNextiIfi=nThen

List1.AddItemn

②EndIf

Nextn

Label1.Caption=“所有的素?cái)?shù)和為”+Str(sum)EndSub請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入____________。(2)劃線②處應(yīng)填入_________________。sum=sum+ni=2ton-1程序代碼如下:sum=sum+ni=2ton-1某電視臺的直播節(jié)目結(jié)束后,主持人從參與短信投票的觀眾中抽取若干名幸運(yùn)觀眾。假設(shè)共有500名觀眾參與短信投票,抽獎程序的部分VB代碼如下,程序運(yùn)行時(shí)界面如圖所示。主持人在文本框Text1中輸入幸運(yùn)觀眾數(shù)量后,單擊“開始”按鈕Command1,在列表框List1中顯示幸運(yùn)觀眾的手機(jī)號碼。請?jiān)趧澗€處填入合適的代碼。某電視臺的直播節(jié)目結(jié)束后,主持人從參與短信投票的觀眾中抽取若Dima(1To500)AsString

'參與短信投票觀眾的手機(jī)號碼 'Form_load過程用于將參與短信投票觀眾的手機(jī)號碼存放到數(shù)組a中PrivateSubForm_Load() '該過程代碼略EndSubPrivateSubCommand1_Click()

DimnAsInteger

'幸運(yùn)觀眾的數(shù)量

DimtAsInteger

'幸運(yùn)觀眾的序號

DimiAsInteger

Randomize

(1)

List1.Clear

Fori=1Ton t=Int(Rnd*500)+1 DoWhile____(2)____=True

t=Int(Rnd*500)+1 Loop List1.AddltemMid(a(t),1,3)+“****”+Mid(a(t),8,4) NextiEndSubDima(1To500)AsString'參與 'check函數(shù)用于判斷隨機(jī)產(chǎn)生的幸運(yùn)觀眾的序號是否重復(fù)PrivateFunctioncheck(tAsInteger)AsBoolean '函數(shù)值為True表示序號重復(fù) '該函數(shù)代碼略EndFunction請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入_____________________________。(2)劃線②處應(yīng)填入_____________________________。n=Val(Text1.text)Check(t) 'check函數(shù)用于判斷隨機(jī)產(chǎn)生的幸運(yùn)觀眾的序號是否重復(fù)n將一張100元的鈔票兌換成面值為20元、10元和5元的鈔票,要求每種至少有1張,共有多少中不同的換法?程序運(yùn)行時(shí)的界面如下所示,點(diǎn)擊“計(jì)算方案”按鈕Command1,在列表框List1中顯示詳細(xì)的兌換方案列表,同時(shí)在標(biāo)簽Label1中顯示兌換方案的總數(shù)。將一張100元的鈔票兌換成面值為20元、10元和5元的鈔票,程序代碼如下所示:PrivateSubCommand1_Click()DimaAsInteger

'存儲20元張面值張數(shù)DimbAsInteger

'存儲10元張面值張數(shù)DimcAsInteger

'存儲5元張面值張數(shù)DimiAsInteger

'存儲兌換方案數(shù)i=0Fora=____①____

Forb=1To9Forc=1To19

If____②____Then

i=i+1

List1.AddItem”第”+Str(i)+”種方案:”+Str(a)+”*20+”+Str(b)+”*10+”+Str(c)+”*5”

EndIfNextc

NextbNextaLabel1.Caption=”共有”+Str(i)+”種兌換方案?!盓ndSub請?jiān)趧澗€處填入合適代碼。(1)劃線①處應(yīng)填入_______。(2)劃線②處應(yīng)填入_____________________。注:該示例程序在素材文件夾下vb20文件夾中。1to4a*20+b*10+c*5=100程序代碼如下所示:1to4a*20+b*10+c*5=1在1000個(gè)奇自然數(shù)中,計(jì)算恰好有三位為1的二進(jìn)制數(shù)的個(gè)數(shù)(例如19對應(yīng)的二進(jìn)制數(shù)10011,是一個(gè)符合題目要求的數(shù)字,而23對應(yīng)的10111,則不符合本題目的要求)。

解決此問題的算法如下:

計(jì)數(shù)器c的初值置為0在1000個(gè)奇自然數(shù)中,計(jì)算恰好有三位為1的二進(jìn)制數(shù)的個(gè)數(shù)( Fori=1To1000計(jì)算第i個(gè)奇數(shù)j:j=2]'使用除2取余法將j化成為二進(jìn)制數(shù),并統(tǒng)計(jì)其中1的位數(shù)w計(jì)數(shù)器w的初值置為0

Dow

溫馨提示

  • 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

提交評論