計(jì)算機(jī)二級(jí)vb例題_第1頁(yè)
計(jì)算機(jī)二級(jí)vb例題_第2頁(yè)
計(jì)算機(jī)二級(jí)vb例題_第3頁(yè)
計(jì)算機(jī)二級(jí)vb例題_第4頁(yè)
計(jì)算機(jī)二級(jí)vb例題_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)二級(jí)vb例題編寫的窗體單擊事件過程代碼如下:

PrivateSubForm_Click()DimxAsInteger,aAsIntegerDimbAsInteger,cAsIntegerx=36a=Int(x/10)'求十位數(shù)

b=xMod10'求個(gè)位數(shù)

c=b*10+a'生成新的數(shù)

Print"處理后的數(shù):";cEndSub運(yùn)行程序后單擊窗體,輸出結(jié)果是:

處理后的數(shù):63

例3.1

給定一個(gè)兩位正整數(shù)(如36),交換個(gè)位數(shù)和十位數(shù)的位置,把處理后的數(shù)顯示在窗體上PrivateSubForm_Click()DimxAsInteger,aAsIntegerDimbAsInteger,cAsIntegerx=36

a=x\10

'求十位數(shù)

b=x-10*a

'求個(gè)位數(shù)

c=b*10+aPrint"處理后的數(shù):";cEndSub

把上述程序改為以下形式,效果是否一樣?想一想

通常,解決某個(gè)問題的程序方法有多種,我們應(yīng)該從中選擇較優(yōu)的一種方法。編寫的窗體單擊事件過程代碼如下:

PrivateSubForm_Click()DimaAsInteger,bAsInteger,cAsIntegerRandomize'初始化隨機(jī)數(shù)生成器

a=Int(90*Rnd+10)'產(chǎn)生[10,99]區(qū)間內(nèi)的隨機(jī)整數(shù)

b=Int(90*Rnd+10)c=a+b'求兩數(shù)之和

Print"產(chǎn)生的兩個(gè)隨機(jī)數(shù):";a,bPrint"和數(shù):";cEndSub運(yùn)行程序后單擊窗體,輸出結(jié)果是:

產(chǎn)生的兩個(gè)隨機(jī)數(shù):5671

和數(shù):127例3.2

通過隨機(jī)函數(shù)產(chǎn)生2個(gè)兩位正整數(shù),求這2個(gè)數(shù)之和并顯示出來

再次運(yùn)行程序,單擊窗體后輸出另一組結(jié)果是:產(chǎn)生的兩個(gè)隨機(jī)數(shù):1837

和數(shù):55

先從字符串a(chǎn)中找出某個(gè)指定字符(本例為空格),再以此字符為界拆分成兩個(gè)字符串。編寫的窗體單擊過程代碼如下:例題2PrivateSubForm_Click()DimaAsString,bAsString,cAsString,nAsIntegera="Visual└┘Basic"

'└┘表示空格

n=InStr(a,"└┘")

'查找空格位置

b=Left(a,n-1)

'取左邊部分

c=Mid(a,n+1)

'取右邊部分

Printb

'顯示左邊部分

Printc

'顯示右邊部分

EndSub

程序運(yùn)行后單擊窗體,輸出結(jié)果是:

Visual

Basic例3.3

使用字符串函數(shù)示例PrivateSubForm_Click()DimaAsString,bAsString,cAsString,nAsIntegera="Visual└┘Basic"

'└┘表示空格

n=InStr(a,"└┘")

'查找空格位置

b=Left(a,n-1)

'取左邊部分

c=Right(____,____)

'取右邊部分

Printb

'顯示左邊部分

Printc

'顯示右邊部分

EndSub

程序運(yùn)行后單擊窗體,輸出結(jié)果是:

Visual

Basic

若用Right函數(shù)來代替Mid函數(shù),應(yīng)如何改動(dòng)?想一想答案:a,Len(a)-n

PrivateSubForm_Click()

x=#1/1/2011#

a=x-Date

b=Weekday(x)

c=Year(Date)

d=Month(Date)

e=Hour(Time)

f=Minute(Time)

Print"現(xiàn)在距離2011年元旦還有:";a;"天"

Print"2011年元旦是:星期";b-1

Print"本月份是:";c;"年";d;"月"

Print"現(xiàn)在是:";e;"時(shí)";f;"分"

EndSub

運(yùn)行程序后單擊窗體,輸出結(jié)果如下:

現(xiàn)在距離2011年元旦還有:304天

2011年元旦是:星期6

本月份是:2010年3月

現(xiàn)在是:10時(shí)27分例3.4

使用日期/時(shí)間函數(shù)示例(留給學(xué)生分析)

將輸入的字符串反向顯示。界面包含兩個(gè)標(biāo)簽,一個(gè)按鈕和兩個(gè)文本框(text1用于輸入,text2用于顯示反向后的字符串),運(yùn)行結(jié)果如圖3.2所示。從文本框text1輸入字符串,單擊command1按鈕,在文本框顯示反向字符串。3.7應(yīng)用示例

程序代碼如下:

PrivateSubCommand1_Click()Dimstr,strReAsStringDimiAsIntegerstr=Text1.TextFori=1ToLen(str)strRe=Mid(str,i,1)&strReNextiText2.Text=strReEndSub【程序分析】①FOR

NEXT為循環(huán)語(yǔ)句(讀者可見第四章).本題中的循環(huán)次數(shù)由字符串的長(zhǎng)度Len(str)決定的.②用Mid函數(shù)每次從字符串中第i個(gè)位置取一個(gè)字符。③注意語(yǔ)句strRe=Mid(str,i,1)&strRe的用法,思考一下,若改為:strRe=strRe&Mid(str,i,1),結(jié)果如何?

判斷條件:年號(hào)(y)能被4整除,但不能被100整除;或者能被400整除,用邏輯表達(dá)式來表示這個(gè)條件,寫成:

(yMod4=0AndyMod100<>0)Or(yMod400=0)

也可寫成:

(Int(y/4)=y/4AndInt(y/100)<>y/100)OrInt(y/400)=y/400)

例4.1判斷某一年是否閏年

(1)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性

(2)編寫程序代碼

功能要求:用戶在“a=”文本框(Text1)、“b=”文本框(Text2)和“c=”文本框(Text3)中輸入數(shù)據(jù),單擊“判斷”按鈕后,則在“最大數(shù)=”文本框(Text4)中輸出結(jié)果

例4.2輸入三個(gè)數(shù)a、b、c,求出其中最大數(shù)

PrivateSubCommand1_Click()DimaAsInteger,bAsIntegerDimcAsInteger,mAsIntegera=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)Ifa>bThenm=a'm用來存放較大值

Elsem=bEndIfIfc>mThenm=cText4.Text=mEndSub

程序代碼

(1)建立應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性

(2)編寫程序代碼功能要求:用戶從上面三個(gè)文本框(Text1、Text2、Text3)中輸入數(shù)據(jù),單擊“排序”按鈕(Command1),則在第4個(gè)文本框(Text4)中顯示結(jié)果

例4.3輸入三個(gè)數(shù),將它們從大到小排序

PrivateSubCommand1_Click()a=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)Ifa<bThen'本條件語(yǔ)句實(shí)現(xiàn)a>=bt=a:a=b:b=tEndIfIfa<cThen'本條件語(yǔ)句實(shí)現(xiàn)a>=ct=a:a=c:c=tEndIfIfb<cThen'本條件語(yǔ)句實(shí)現(xiàn)b>=ct=b:b=c:c=tEndIfText4.Text=a&","&b&","&cEndSub

程序代碼起泡法窮舉法PrivateSubCommand1_Click()Dima!,b!,c!Clsa=InputBox("a=")b=InputBox("b=")c=InputBox("c=")Ifa>bAndb>cThenPrinta,b,cIfa>bAndb<=cAnda>cThenPrinta,c,bIfa>bAndb<=cAnda<=cThenPrintc,a,bIfa<=bAndb<=cThenPrintc,b,aIfa<=bAndb>cAnda>cThenPrintb,a,cIfa<=bAndb>cAnda<=cThenPrintb,c,aEndSub

程序代碼

實(shí)現(xiàn)一些簡(jiǎn)單的條件判斷分支結(jié)構(gòu)格式:

IIf(條件,條件為真時(shí)的值,條件為假時(shí)的值)

功能:對(duì)條件進(jìn)行測(cè)試,若條件成立(為真值),則取第一個(gè)值(即“條件為真時(shí)的值”),否則取第二個(gè)值(即“條件為假時(shí)的值”)。

例如,將a、b中的小數(shù),放入Min變量中:

Min=IIf(a<b,a,b)4.2.3IIf函數(shù)

例如:0時(shí)至12時(shí),顯示“早上好”利用窗體裝載(Load)事件,采用Print直接在窗體上輸出結(jié)果

PrivateSubForm_Load()DimhAsIntegerShow'使print輸出在窗體上的內(nèi)容可見

h=Hour(Time)'取系統(tǒng)的時(shí)間

FontSize=30:ForeColor=RGB(255,0,0)BackColor=RGB(255,255,0)Ifh<12ThenPrint"早上好!"ElseIfh<18ThenPrint"下午好!"ElsePrint"晚上好!"EndIfEndIf

EndSub例4.4

根據(jù)不同的時(shí)間段發(fā)出問候語(yǔ)

輸入學(xué)生成績(jī)(百分制),判斷該成績(jī)的等級(jí)(優(yōu)、良、中、及格、不及格)

(1)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性

(2)編寫程序代碼

功能要求:用戶從“成績(jī)”文本框(Text1)中輸入學(xué)生成績(jī),單擊“執(zhí)行”按鈕(command1)后,經(jīng)判斷得到等級(jí)并顯示在標(biāo)簽Label2上。

例4.5判斷成績(jī)的等級(jí)

PrivateSubCommand1_Click()DimscoreAsInteger,tempAsStringscore=Val(Text1.Text)temp="成績(jī)等級(jí)為:"Ifscore<0ThenLabel2.Caption="成績(jī)出錯(cuò)"ElseIfscore<60ThenLabel2.Caption=temp+"不及格"ElseIfscore<=79ThenLabel2.Caption=temp+"及格"ElseIfscore<=100ThenLabel2.Caption=temp+"優(yōu)良"ElseLabel2.Caption="成績(jī)出錯(cuò)"EndIfEndSub

實(shí)現(xiàn)例4.5所完成的功能,程序代碼如下:

PrivateSubcommand1_click()DimscoreAsInteger,tempAsStringscore=Val(Text1.Text)temp="成績(jī)等級(jí)為:"SelectCasescoreCase0To59Label2.Caption=temp+"不及格"Case60To69Label2.Caption=temp+"及格"Case70To79Label2.Caption=temp+"中"Case80To89Label2.Caption=temp+"良"Case90To100Label2.Caption=temp+"優(yōu)"CaseElseLabel2.Caption="成績(jī)出錯(cuò)"EndSelectEndSub

例4.6

用SelectCase語(yǔ)句來實(shí)現(xiàn)多分支選擇功能

先在窗體上顯示以下考題:

雞兔同籠,已知雞和兔總頭數(shù)為h=23,總腳數(shù)為f=56,求雞兔各有多少只?

再提供輸入框由學(xué)生回答問題,然后采用輸出框顯示對(duì)答案的評(píng)判意見。

設(shè)計(jì)步驟如下:

(1)在窗體上設(shè)置一個(gè)命令按鈕Command1(2)采用窗體的裝載事件Form_Load,使考題內(nèi)容直接顯示在窗體上。

例4.7

求雞數(shù)和兔數(shù)

當(dāng)用戶單擊“答題”按鈕時(shí),程序提供輸入對(duì)話框,由用戶輸入答案,再通過輸出框顯示評(píng)判意見。采用的程序代碼如下:

PrivateSubForm_Load()

ShowPrintFontSize=18PrintSpc(9);"考一考你"FontSize=13PrintSpc(5);"雞兔同籠,已知雞和兔總頭數(shù)為23,"PrintSpc(3);"總腳數(shù)為56,求雞兔各有多少?"EndSub

PrivateSubCommand1_Click()h=23:f=56'總頭數(shù)及總腳數(shù)

j1=(4*h-f)/2'求出的雞數(shù)

t1=(f-2*h)/2'求出的兔數(shù)

j2=Val(InputBox("雞的只數(shù)是多少?","請(qǐng)回答"))t2=Val(InputBox("兔的只數(shù)是多少?","請(qǐng)回答"))SelectCaseTrue'選擇真值

Casej1=j2Andt1=t2MsgBox("回答完全正確!")Casej1=j2MsgBox("雞數(shù)回答正確,但兔數(shù)不對(duì)!")Caset1=t2MsgBox("兔數(shù)回答正確,但雞數(shù)不對(duì)!")CaseElseMsgBox("回答錯(cuò)誤!")EndSelect

EndSub

(1)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性

一個(gè)計(jì)時(shí)器控件和一個(gè)文本框。計(jì)時(shí)器控件Timer1的Interval屬性值設(shè)定為1000(1秒)例4.10

建立一個(gè)電子時(shí)鐘

(2)編寫程序代碼

PrivateSubTimer1_Timer()

'timer事件過程

Text1.Text=Time'Time是時(shí)間函數(shù)

EndSub

利用計(jì)時(shí)器可以按指定間隔時(shí)間對(duì)字體進(jìn)行放大

(1)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性

一個(gè)計(jì)時(shí)器控件和和一個(gè)標(biāo)簽。計(jì)時(shí)器控件Timer1的計(jì)時(shí)器采用默認(rèn)的屬性值

Enabled屬性值為True(真),Interval屬性值為0

例4.11

實(shí)現(xiàn)字體的放大

(2)編寫程序代碼

PrivateSubForm_Load()Label1.Caption="放大"Label1.Width=Form1.Width'把標(biāo)簽的高度和寬度

'設(shè)置為窗體相同尺寸

Label1.Height=Form1.HeightTimer1.Interval=800

EndSubPrivateSubTimer1_Timer()IfLabel1.FontSize<140ThenLabel1.FontSize=Label1.FontSize*1.2ElseLabel1.FontSize=8EndIf

EndSub

例4.12

電子倒計(jì)時(shí)器。先由用戶給定倒計(jì)時(shí)的初始分秒數(shù),然后開始倒計(jì)時(shí),當(dāng)計(jì)到0分0秒時(shí),通過消息對(duì)話框顯示“倒計(jì)時(shí)結(jié)束”

(1)在窗體上建立一個(gè)計(jì)時(shí)器(Timer1)、兩個(gè)標(biāo)簽、兩個(gè)文本框(Text1和Text2)和一個(gè)命令按鈕(Command1)

計(jì)時(shí)器的Enabled屬性值為True,Interval屬性值為0

4.6程序舉例

(2)編寫程序代碼

DimmAsInteger,sAsInteger'聲明模塊級(jí)變量

PrivateSubForm_Load()Timer1.Interval=1000'設(shè)置每隔1秒觸發(fā)1次Timer事件

Timer1.Enabled=False'關(guān)閉計(jì)時(shí)器

EndSubPrivateSubCommand1_Click()'“倒計(jì)時(shí)”

m=Val(Text1.Text)s=Val(Text2.Text)Timer1.Enabled=True'打開計(jì)時(shí)器

EndSubPrivateSubTimer1_Timer()

Ifs>0Then

s=s-1

Else

Ifm>0Then

m=m-1

s=59

EndIf

EndIf

Text1.Text=Format(m,"00")

Text2.Text=Format(s,"00")

Ifs=0Andm=0Then

MsgBox"計(jì)時(shí)結(jié)束"

UnloadMe

EndIfEndSub

(1)分析:方程的解有以下幾種可能:

若a=0,不是二次方程若b2-4ac=0,有兩個(gè)相等實(shí)根若b2-4ac>0,有兩個(gè)不等實(shí)根若b2-4ac<0,有兩個(gè)共軛復(fù)根

(2)程序框圖程序框圖

程序框圖也稱程序流程圖,它能直觀地表示程序的處理步驟,是一種描述算法的常用方法。

(3)建立應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性

(4)編寫程序代碼例4.14

求一元二次方程ax2+bx+c=0的解

程序框圖假假假真真真開始輸入a,b,ca=0

輸出“不是二次方程”D=b*b–4*a*cR=-b/(2*a)D=0輸出兩實(shí)根-b/(2*a)輸出兩個(gè)實(shí)根X1,X2輸出兩個(gè)復(fù)根R+PiR-PiD>0計(jì)算復(fù)根的虛部P=sqr(-D)/(2*a)X1=(-b+sqr(D))/(2*a)X2=(-b-sqr(D))/(2*a)結(jié)束

當(dāng)用戶在“a=”文本框(Text1)、“b=”文本框(Text2)和“c=”文本框(Text3)輸入a,b,c的值后,單擊“計(jì)算”按鈕,則從“x1=”文本框(Text4)和“x2=”文本框(Text5)輸出計(jì)算結(jié)果。當(dāng)輸入的a,b,c為1,2,-8時(shí),運(yùn)行結(jié)果如下圖

功能要求

PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingleDimDAsSingle,X1AsSingle,X2AsSingleDimRAsSingle,PAsSinglea=Val(Text1.Text)'取數(shù)據(jù)ab=Val(Text2.Text)'取數(shù)據(jù)bc=Val(Text3.Text)'取數(shù)據(jù)cIfa=0Then'當(dāng)a=0Text4.Text="不是二次方程"Text5.Text="不是二次方程"Else'a<>0D=b*b-4*a*cR=-b/(2*a)

IfD=0Then'D=0Text4.Text=RText5.Text=RElseIfD>0Then'D>0X1=(-b+Sqr(D))/(2*a)X2=(-b-Sqr(D))/(2*a)Text4.Text=X1Text5.Text=X2Else'D<0P=Sqr(-D)/(2*a)Text4.Text=R&"+"&P&"i"Text5.Text=R&"-"&P&"i"EndIfEndIf

EndSub

PrivateSubForm_Load()Dima(1To10)AsLong,sumAsLong,tAsLongDimnAsIntegerShowt=1Forn=1To10t=t*n

a(n)=tNextnsum=0ForEachxInasum=sum+xNextxPrint"1!+2!+3!+……10!=";sumEndSub輸出結(jié)果:

1!+2!+3!+…+10!=4037913

例6.8

求1!+2!+…+10!的值

解題方法:

(1)利用Int(91*Rnd+10)產(chǎn)生值為10到100的隨機(jī)整數(shù)

使用Randomize得到不同的隨機(jī)數(shù)序列

(2)按值從小到大進(jìn)行排序。排序方法:

將10個(gè)數(shù)放入數(shù)組a中,對(duì)下列下標(biāo)變量進(jìn)行排序處理:

a(1),a(2),a(3),…,a(10)

①?gòu)倪@10個(gè)下標(biāo)變量中,選出最小值,通過交換把該值存入a(1)中②除a(1)之外(a(1)已存放最小值),從其余9個(gè)下標(biāo)變量中選出最小值(即10個(gè)數(shù)中的次小值),通過交換把該值存入a(2)中

③選出a(3)~a(10)中的最小值,通過交換,把該值存入a(3)中

④重復(fù)上述處理,至a(8),可使a(1)~a(8)按小到大排列

⑤第9次處理,選出a(9)及a(10)中的最小值,通過交換把該值存入a(9)中,此時(shí)a(10)存放的就是最大值

例6.6

隨機(jī)產(chǎn)生十個(gè)10~100的整數(shù),用“選擇排序法”按值從小到大順序排序,最后輸出結(jié)果排列要求

小大示例:

a(1)a(2)a(3)a(4)

906465591.a(1)與a(2)~a(4)比較,選出最小值,結(jié)果

599065642.a(2)與a(3)~a(4)比較,選出次小值,結(jié)果

596490653.a(3)與a(4)比較,選出較小值,結(jié)果

59646590i=1j=2,3,4i=2j=3,4i=3j=4Fori=1to3Forj=i+1to4……NextjNexti程序結(jié)構(gòu)

完成上述比較及排序處理過程,可以采用兩重循環(huán)結(jié)構(gòu),外循環(huán)的循環(huán)變量i從1到9,共循環(huán)九次;內(nèi)循環(huán)的循環(huán)變量j從i+1到10。

本例采用默認(rèn)的用戶界面,所需數(shù)據(jù)由隨機(jī)函數(shù)產(chǎn)生,處理后結(jié)果信息通過Print方法直接輸出在窗體上。

PrivateSubForm_Load()ShowRandomizeDima(1To10)AsIntegerPrint"原始數(shù)據(jù):"Fori=1To10'產(chǎn)生10個(gè)隨機(jī)數(shù)

a(i)=Int(91*Rnd+10)Printa(i);Nexti

(3)程序結(jié)構(gòu)

Print:PrintFori=1To9Forj=i+1To10Ifa(i)>a(j)Thent=a(i):a(i)=a(j):a(j)=t'交換位置

EndIfNextjNextiPrint"排序結(jié)果:"Fori=1To10Printa(i);NextiEndSub

改寫中間程序段“Fori=1To9”~“Nexti”(共7個(gè)程序行)

Fori=1To9k=i‘k用來記錄每次選擇的最小值的下標(biāo)

Forj=i+1To10Ifa(k)>a(j)Thenk=jEndIfNextjt=a(k):a(k)=a(i):a(i)=t'交換位置

Nexti

變量k記錄每一次選出的最小值的下標(biāo),在本次比較結(jié)束后,使a(i)與a(k)一次換位即可排列要求

小大示例:

a(1)a(2)a(3)a(4)

90646559a(1)與a(2)~a(4)比較,選出最小值,直接與a(1)交換,結(jié)果:

59646590

5.1.1For...Next循環(huán)語(yǔ)句

按指定次數(shù)執(zhí)行循環(huán)體

例5.1

在窗體上顯示2至10各偶數(shù)的平方數(shù)采用Print直接在窗體上輸出結(jié)果,程序代碼:

PrivateSubForm_Load()DimkAsIntegerShowFork=2To10Step2Printk*kNextkEndSub程序運(yùn)行結(jié)果:

41636641005.1循環(huán)語(yǔ)句說明:循環(huán)變量k的初值、終值和步長(zhǎng)值分別為2,10和2,即從2開始,每次加2,到10為止,控制循環(huán)5次。每次循環(huán)都將循環(huán)體(Printk*k)執(zhí)行一次

采用Print直接在窗體上輸出結(jié)果,程序代碼:

PrivateSubForm_Load()

Shows=0Fork=1To8s=s+kNextkPrint"s=";sEndSub

程序運(yùn)行結(jié)果如下:

s=36

語(yǔ)句s=s+k(循環(huán)體語(yǔ)句)的執(zhí)行過程

例5.2

求S=1+2+3+…+8

采用Print直接在窗體上輸出結(jié)果,程序代碼:

PrivateSubForm_Load()Showt=1Forc=1To8t=t*cNextcPrint"T=";tEndSub

程序運(yùn)行結(jié)果是:

T=40320

語(yǔ)句t=t*c也稱乘法器。先將t置1(不能置0)。

在循環(huán)程序中,常用累加器和累乘器來完成各種計(jì)算任務(wù)例5.3

求T=8!=1×2×3×…×8

采用Print直接在窗體上輸出結(jié)果,程序代碼如下:

PrivateSubForm_Load()ShowDimpiAsSingle,cAsInteger,sAsIntegerpi=0s=1's表示加或減運(yùn)算

Forc=1To10000Step2pi=pi+s/cs=-s'交替改變加、減號(hào)

NextcPrint"π=";pi*4EndSub

程序運(yùn)行結(jié)果是:

π=3.141397

例5.4

用π/4=1-1/3+1/5-1/7+……級(jí)數(shù)求π的近似值(取前5000項(xiàng)來進(jìn)行計(jì)算)

下面采用“窮舉法”來解此題。其做法是:從所有可能解中,逐個(gè)進(jìn)行試驗(yàn),若滿足條件,就得到一個(gè)解,否則不是。直到條件滿足或判別出無(wú)解為止。

令母雞為x只,小雞為y只,根據(jù)題意可知

y=100–x

開始先讓x初值為1,以后逐次加1,求x為何值時(shí),條件3x+y/3=100成立。如果當(dāng)x達(dá)到33時(shí)還不能使條件成立,則可以斷定此題無(wú)解

例5.5

用100元買100只雞,母雞3元1只,小雞1元3只,問各應(yīng)買多少只?

采用Print直接在窗體上輸出結(jié)果,程序代碼:

PrivateSubForm_Load()DimxAsInteger,yAsIntegerShowForx=1To33y=100-xIf3*x+y/3=100ThenPrint"母雞只數(shù)為:";x,Print"小雞只數(shù)為:";yEndIfNextxEndSub

運(yùn)行結(jié)果:

母雞只數(shù)為:25小雞只數(shù)為:75

采用DoWhile...Loop語(yǔ)句

采用Print直接在窗體上輸出結(jié)果,程序代碼:

PrivateSubForm_Load()DimnAsInteger,sAsLongShown=1:s=0DoWhilen<=100s=s+n*nn=n+1LoopPrint"s=";sEndSub例5.6

求S=12+22+…+1002

程序運(yùn)行結(jié)果:

S=338350

是否可以交換順序:

n=n+1

s=s+n*n采用Print直接在窗體上輸出結(jié)果,程序代碼:

PrivateSubForm_Load()ShowDimpiAsSingle,nAsLong,sAsIntegerpi=0:n=1:s=1DoWhilen<=100000'或1/n>=0.00001pi=pi+s/ns=-sn=n+2LoopPrint"π=";pi*4EndSub例5.7

用π/4=1-1/3+1/5-1/7+……

級(jí)數(shù),求π的近似值。當(dāng)最后一項(xiàng)的絕對(duì)值小于10-5時(shí),停止計(jì)算

程序運(yùn)行結(jié)果:

π=3.141575

“輾轉(zhuǎn)相除法”算法:求出m/n余數(shù)p,若p=0,n即為最大公約數(shù);若p非0,則把原來的分母n作為新的分子m,把余數(shù)p作為新的分母n繼續(xù)求解設(shè)計(jì)步驟如下:

(1)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性例5.8

輸入兩個(gè)正整數(shù),求它們的最大公約數(shù)

編寫的“計(jì)算”按鈕Click事件過程代碼如下:

PrivateSubCommand1_Click()DimmAsInteger,nAsInteger,pAsIntegerm=Val(Text1.Text):n=Val(Text2.Text)Ifm<=0Orn<=0Then

MsgBox("數(shù)據(jù)錯(cuò)誤!")EndEndIfDop=mModnm=nn=pLoopWhilep<>0Text3.Text=mEndSub

若輸入的m和n的值為85和68,則運(yùn)行結(jié)果如上圖

把每次輸入的數(shù)累加。當(dāng)輸入-1時(shí)結(jié)束程序的運(yùn)行

(1)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性

(2)編寫程序代碼

PrivateSubForm_Load()ShowSum=0DoWhileTrue'條件為真,循環(huán)無(wú)終止進(jìn)行下去

x=Val(InputBox("請(qǐng)輸入要加入的數(shù)(-1表示結(jié)束)","輸入數(shù)據(jù)"))Ifx=-1ThenExitDoEndIfSum=Sum+xText1.Text=SumLoop

MsgBox("累加運(yùn)算結(jié)束")EndSub

以-1作為“終止循環(huán)標(biāo)志”

例5.9

設(shè)計(jì)一個(gè)“加法器”程序例5.9.1有一張厚0.5mm、面積足夠大的紙,將它不斷地對(duì)折,問對(duì)折多少次后,其厚度可達(dá)到珠穆朗瑪峰的高度?N=0H=0.5Dowhileh<8848000N=n+1H=2*hLoopPrint"對(duì)折次數(shù)為:”;n

N=0H=0.5Dowhileh<8848000N=n+1h=2*hIfh>8848000ThenExitdoEndifLoopPrint“對(duì)折次數(shù)是:”;n例5.10.1

求s=1!+2!+……+10!的值。S=0Forn=1to10T=1Form=1tonT=t*mNextmS=s+tNextnPrint“S=“;sS=0T=1Forn=1to10T=t*nS=s+tNextnPrint“S=“;S

本例可采用兩重循環(huán)來實(shí)現(xiàn)。外循環(huán)控制輸出7行,內(nèi)循環(huán)控制每行輸出要求的字符數(shù)。在進(jìn)入內(nèi)循環(huán)之前,使用PrintTab()來對(duì)起始輸出位置定位,退出內(nèi)循環(huán)后,使用Print來控制換行。例5.11

編一程序,輸出下列所示的圖形

采用Print直接在窗體上輸出結(jié)果,程序代碼如下:

PrivateSubForm_Load()

ShowFori=1To7PrintTab(10-i);Forj=1To2*i-1PrintChr(i+48);NextjPrintNextiEndSub

PrintChr(i+48)與Printi有所不同

(1)分析:設(shè)一元硬幣為a枚,二元硬幣為b枚,五元硬幣為c枚,可列出方程

a+b+c=10

a+2b+5c=25

采用兩重循環(huán),外循環(huán)變量a從0~10,內(nèi)循環(huán)變量b從0~10

(2)創(chuàng)建應(yīng)用程序的用戶界面

例5.12

取一元、二元、五元的硬幣共十枚,付給25元錢,有多少種不同的取法?

(3)編寫程序代碼

程序通過Print方法把處理結(jié)果輸出在標(biāo)簽的下方

PrivateSubForm_Load()Show

CurrentX=0:CurrentY=1500'確定開始顯示的坐標(biāo)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論