版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)派遣雙方協(xié)議書七篇
- 個(gè)人建筑承包協(xié)議
- 非典型麻疹綜合征病因介紹
- 機(jī)械基礎(chǔ) 課件 模塊八任務(wù)三 聯(lián)軸器與離合器
- (2024)黃金選礦劑生產(chǎn)建設(shè)項(xiàng)目可行性研究報(bào)告(一)
- 全景式數(shù)字游民洞察報(bào)告
- 獸醫(yī)寄生蟲病學(xué)練習(xí)題含參考答案
- 佐樂米貼鼻子課件
- 養(yǎng)老院老人洗浴衛(wèi)生管理制度
- 養(yǎng)老院老人緊急救援人員培訓(xùn)制度
- 2023-2024學(xué)年廣東省廣州市白云區(qū)九年級(jí)(上)期末語(yǔ)文試卷
- 2024統(tǒng)編版初中八年級(jí)語(yǔ)文上冊(cè)第六單元:大單元整體教學(xué)設(shè)計(jì)
- 五年級(jí)上冊(cè)數(shù)學(xué)試題試卷(8篇)
- 2024-2025學(xué)年四年級(jí)科學(xué)上冊(cè)第三單元《運(yùn)動(dòng)和力》測(cè)試卷(教科版)
- 學(xué)術(shù)規(guī)范與論文寫作智慧樹知到答案2024年浙江工業(yè)大學(xué)
- 2024年典型事故案例警示教育手冊(cè)15例
- 【打印版】2021年上海市浦東新區(qū)中考一模數(shù)學(xué)試卷及解析
- EN1779-歐洲無(wú)損檢測(cè)標(biāo)準(zhǔn)
- 【數(shù)據(jù)結(jié)構(gòu)】A類停車場(chǎng)管理系統(tǒng)
- 生態(tài)保護(hù)紅線劃定.ppt
- 機(jī)械原理榫槽成型半自動(dòng)切削機(jī)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論