課后習(xí)題及補(bǔ)充習(xí)題(程序設(shè)計(jì))_第1頁
課后習(xí)題及補(bǔ)充習(xí)題(程序設(shè)計(jì))_第2頁
課后習(xí)題及補(bǔ)充習(xí)題(程序設(shè)計(jì))_第3頁
課后習(xí)題及補(bǔ)充習(xí)題(程序設(shè)計(jì))_第4頁
課后習(xí)題及補(bǔ)充習(xí)題(程序設(shè)計(jì))_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

'第九章

'1.編寫程序,接受用戶輸入的20個(gè)數(shù),輸出20個(gè)數(shù)的平均值。

'解1

Subpro41()

Dima(lTo20)AsSingle,iAsInteger,sumAsSingle

sum=0

Fori=1To20

a(i)=ValGnputBox(〃請輸入數(shù)據(jù):〃))

sum=sum+a(i)

Nexti

MsgBox〃平均值為:〃&sum/20

EndSub

'解2

Subpro411()

Dima(lTo20)AsSingle,iAsInteger,sumAsSingle,nAsInteger

n=0

sum二0

Fori=1To20

a(i)=Val(InputBox(〃請輸?shù)?&i&〃個(gè)數(shù)〃))

sum=sum+a(i)

n=n+1

Nexti

MsgBox〃平均值為:〃&sum/n

EndSub

'2.編寫程序進(jìn)行計(jì)算1!+3!+5!+7!。

'解1

Subpro421()

DimiAsInteger,tAsInteger,sumAsInteger

t=1:sum=0

Fori=1To7

t=t*i

IfiMod200Then

sum=sum+t

EndIf

Nexti

MsgBox〃l!+3!+5!+7!=〃&sum

EndSub

'解2

Subpro422()

DimiAsInteger,tAsInteger,sumAsInteger

t=1:sum=0

Fori=1To7

t=1

Forj=1Toi

t=t*j

Nextj

IfiMod200Then

sum=sum+t

EndIf

Nexti

MsgBox〃l!+3!+5!+7!=〃&sum

EndSub

'解3

Subpro423()

DimiAsInteger,tAsInteger,sumAsInteger

t=1:sum=0

Fori=1To7step2

t=1

Forj=1Toi

t=t*j

Nextj

Sum=sum+t

Nexti

MsgBox〃l!+3!+5!+7!=〃&sum

EndSub

'3.輸入兩個(gè)整數(shù),求兩個(gè)整數(shù)之間能被3整除的數(shù)之和。

Subpro43()

DimxAsInteger,yAsInteger,tAsInteger,sumAsInteger,iAsInteger

x=Val(InputBox("請輸入一個(gè)整數(shù)〃))

y=Val(InputBox(〃請輸入一個(gè)整數(shù)〃))

Ifx>yThen

t=x

x=y

y=t

EndIf

Fori=xToy

IfiMod3=0Then

sum=sum+i

EndIf

Nexti

MsgBoxx&〃和〃&y&〃之間可以被3整除的數(shù)之和為:〃&sum

EndSub

'4.編寫程序?qū)⒔虒W(xué)管理數(shù)據(jù)庫中學(xué)生成績表中的百分制成績轉(zhuǎn)成用5分制表示,每20分為?個(gè)

等級。

,解1

Subpro441()

DimcnAsNewADODB.Connection

DimrsAsNewADODB.Recordset

DimstrsqlAsString

DimscoreAsADODB.Field

Setcn=CurrentProject.Connection

strsql=zzselect*from學(xué)生成績〃

rs.Openstrsql,cn,adOpenDynamic,adLockOptimistic,adCmdText

Setscore=rs.Fields("成績”)

rs.MoveFirst

DoWhileNotrs.EOF

SelectCasescore

Case80To100

score=5

Case60To80

score=4

Case40To60

score=3

Case20To40

score=2

CaseElse

score=1

EndSelect

rs.MoveNext

Loop

rs.Close

cn.Close

EndSub

,解2

Subpro442()

DimcnAsNewADODB.Connection

DimrsAsNewADODB.Recordset

DimstrsqlAsString

DimscoreAsADODB.Field

Setcn=CurrentProject.Connection

strsql="select*from學(xué)生成績〃

rs.Openstrsql,cn,adOpenDynamic,adLockOptimistic,adCmdText

Setscore=rs.Fields("成績〃)

rs.MoveFirst

DoWhileNotrs.EOF

IfInt(score\20)>=4Then

score-5

ElselfInt(score\20)>=3Then

score=4

ElselfInt(score\20)>=2Then

score=3

ElselfInt(score\20)>=1Then

score=2

Else

score=1

EndIf

rs.MoveNext

Loop

rs.Close

cn.Close

EndSub

'第10章

'1.設(shè)計(jì)一個(gè)實(shí)現(xiàn)兩個(gè)整數(shù)相加并將結(jié)果返回的函數(shù)。

Functionadd41(aAsInteger,bAsInteger)AsInteger

add41=a+b

EndFunction

主調(diào)過程示例:

Submain41()

DimxAsInteger,yAsInteger

x=VaKlnputBoxCx^))

y=Vai(InputBox(z,y=,z))

MsgBoxadd41(x,y)

EndSub

'2.假如利用第1題中的函數(shù)實(shí)現(xiàn)兩個(gè)浮點(diǎn)型數(shù)值相加,那么應(yīng)該如何修改函數(shù)?

'單精度浮點(diǎn)型

Functionadd421(aAsSingle,bAsSingle)AsSingle

DimmAsSingle,nAsSingle

m=CSng(a)

n=CSng(b)

add421=a+b

EndFunction

主調(diào)過程示例:

Submain421()

DimxAsSingle,yAsSingle

x=Vai(InputBox("x="))

y=Vai(InputBox(z,y=,z))

MsgBoxadd421(x,y)

EndSub

'雙精度浮點(diǎn)型

Functionadd422(aAsDouble,bAsDouble)AsDouble

DimmAsDouble,nAsDouble

m=CDbl(a)

n=CDbl(b)

add422=a+b

EndFunction

主調(diào)過程示例:

Submain422()

DimxAsDouble,yAsDouble

x=Vai(InputBox(〃x="))

y=Vai(InputBox(z,y=,z))

MsgBoxadd422(x,y)

EndSub

'3.編寫一個(gè)函數(shù),實(shí)現(xiàn)從給定的表中刪除指定的數(shù)據(jù)。

Functiondeldata(strtableAsString,strfieldAsString,data)

DimcnAsNewADODB.Connection

DimrstAsNewADODB.Recordset

DimstrsqlAsString

Setcn二CurrentProjcct.Connection

strsql="select*from〃&strtable

rst.Openstrsql,cn,adOpenDynamic,adLockOptimistic,adCmdText

rst.MoveFirst

DoWhileNotrst.EOF

Ifrst.Fields(strfield)=dataThen

rst.Delete

EndIf

rst.MoveNext

Loop

rst.Close

cn.Close

EndFunction

主調(diào)過程示例:

PrivateSubmain43()

DimxAsString,yAsString,zAsSingle

x=InputBox(〃x=〃)

y=InputBox(,zy=z/)

z=Vai(InputBox("z="))

deldatax,y,z

EndSub

'4.編寫?個(gè)過程swap,要求該過程能夠接收2個(gè)字符,并將這2個(gè)字符進(jìn)行交換。

SubSwap(xAsString,yAsString)

DimzAsString

z=x

x=y

y=Z

Debug.Print〃x=〃&x

Debug.Print〃y="&y

EndSub

主調(diào)過程示例:

PrivateSubmain44()

DimnAsString

DimmAsString

n=lnputBox("n=")

m=InputBox("m=")

Swapn,m

EndSub

第11章

三、操作題

1.設(shè)計(jì)一個(gè)窗體,在窗體上放置一個(gè)文本框(txtinput)和按鈕(btnOK),編寫按鈕的單擊事件(btnOK_Click),實(shí)

現(xiàn)這樣的功能:在文本框中輸入內(nèi)容,單擊按鈕,可以將文本框中的內(nèi)容顯示在窗體的標(biāo)題上。

窗體名稱:窗體標(biāo)題示例

命令按鈕的單擊事件代碼如下:

PrivateSubbtnOK_Click()

Me.Caption=txtinput或者:forms!窗體標(biāo)題示例.caption=txtinput

EndSub又或者:form_窗體標(biāo)題示例.caption=txtinput

2.創(chuàng)建一個(gè)窗體,并在窗體上放上命令按鈕CMD,要求,在單擊CMD按鈕時(shí),圖書表中的單價(jià)降低10船數(shù)量增加10,然

后將總金額字段填充完整。

原始“圖書”表如下:

叵圖書:表

書號書名1作者出版社出版日期數(shù)量單價(jià)

?ISBN7-302-0236數(shù)據(jù)結(jié)構(gòu)(C語言《嚴(yán)前敏,吳偉民清華大學(xué)出版社2004-11-0114¥19.80

ISBN7-302-0380C程序設(shè)計(jì)覺二片譚浩強(qiáng)清華大學(xué)出版社2002-07-0119¥29.70

ISBN7-81110-09Access數(shù)據(jù)庫程F陳桂林等安徽大學(xué)出版社2006-01-0119¥40.50

米0¥0.00

I記錄:⑷,11->舊1>*1共有記錄數(shù):3

設(shè)計(jì)窗體如下:-

命令按鈕的單擊事件代碼如下:

PrivateSubCMDClickO

DimcnAsNewADODB.Connection

DimrstAsNewADODB.Recordset

DimstrsqlAsString

Setcn=CurrentProject.Connection

strsql="select*from圖書〃

rst.Openstrsql,cn,adOpenDynamic,adLockOptimistic,adCmdText

rst.MoveFirst

DoWhileNotrst.EOF

rst.Fields(〃單價(jià)〃)=rst.Fields(〃單價(jià)")*0.9

rst.Fields(〃數(shù)量〃)=rst.Fields(〃數(shù)量〃)+10

rst.Fields(〃總金額〃)=rst.Fields("單價(jià)")*rst.Fields("數(shù)量")

rst.MoveNext

Loop

rst.Close

cn.Close

EndSub

單擊命令按鈕后,“圖書”表如下:

■圖書:表

書號書名作者出版社出版日期數(shù)量單價(jià)1

?fcSBN7-302-023耳數(shù)據(jù)結(jié)構(gòu)(C語言片嚴(yán)前敏,吳偉民清華大學(xué)出版社2004-11-0124¥17.82

ISBN7-302-0380C程序設(shè)計(jì)能二K譚浩強(qiáng)清華大學(xué)出版社2002-07-0129¥26.73

ISBN7-81110-09Access數(shù)據(jù)庫程f陳桂林等安徽大學(xué)出版社2006-01-0129¥36.45

米0¥0.00

記錄:,11「1>1>1」共有記錄數(shù):3

3.設(shè)計(jì)?個(gè)電話計(jì)費(fèi)程序,窗體如下圖所示,假定每分鐘通過費(fèi)用為0.1元,不足1分鐘按1分鐘計(jì)。

標(biāo)題為“開始”的命令按鈕的單擊事件代碼如下:

PrivateSubCommand8_Click()

TextO=

Text2二〃〃

Text4=〃〃

Text6=〃〃

TextO=TimeO

EndSub

標(biāo)題為“計(jì)費(fèi)”的命令按鈕的單擊事件代碼如下:

PrivateSubCommand9_Click()

DimxAsDate

DimyAsSingle

Text2=TimeO

x=Text2-TextO

Text4=x

IfSecond(x)<>0Then

y=Hour(x)*60*0.1+(Minute(x)+1)*0.1

Text6=y&〃元〃

Else

y=Hour(x)*60*0.1+Minute(x)*0.1

Text6=y&〃元”

EndIf

EndSub

補(bǔ)充習(xí)題部分:

1.一元二次方程求解

PrivateSubshl()

DimaAsSingle,bAsSingle,cAsSingle

DimdAsSingle,x2AsSingle,xlAsSingle

a=Vai(InputBox(z/a=,/))

b=Vai(InputBox(z/b=,z))

c=Vai(InputBox(,zc=,/))

d=b2-4*a*c

Ifa<>0Andd>=0Then

xl=("b+Sqr(d))/(2*a)

x2=(-b-Sqr(d))/(2*a)

MsgBox〃方程的根為:xl=〃&xl&〃,x2=〃&x2

Else

MsgBox〃方程無實(shí)根〃

EndIf

EndSub

2.分段函數(shù):(x=0,y=0;x<0,y=-l;x>0,y=l)

if語句:

PrivateSubsh21()

DimxAsSingle,yAsInteger

x=Vai(InputBoxCx=O)

Ifx=0Then

y=0

Elselfx<0Then

y=-1

Else

y=1

EndIf

MsgBox'y=〃&y

EndSub

selectcase語句:

PrivateSubsh22()

DimxAsSingle,yAsInteger

x=Vai(InputBox(z/x=//))

SelectCasex

CaseIs>0

y=1

Case0

y=0

CaseElse

y二T

EndSelect

MsgBox"y="&y

EndSub

3.求s=l*2+2*3+3*4+...21*22

PrivateSubsh3()

DimsAsInteger

DimaAsInteger,bAsInteger,cAsInteger

s=0

a=0

b=1

DoWhilea<21Andb<22

a=a+1

b=b+1

c=a*b

s=s+c

Loop

Debug.Print〃s="&s

EndSub

4.在前兩個(gè)文本框中輸入兩個(gè)整數(shù),單擊“奇數(shù)和”按鈕將兩個(gè)整數(shù)之間的奇數(shù)的和顯示在第三個(gè)文

本框中。

窗體如下:

命令按鈕單擊事件代碼如下:

PrivateSubCommand6Click()

DimaAsInteger,bAsInteger,sAsInteger,iAsInteger,cAsInteger

s=0

a=Textl

b=Text2

Ifa>bThen

c=a

a=b

b二c

EndIf

i=a

DoWhilei>=aAndi<=b

IfiMod200Then

s=s+i

EndIf

i=i+1

Loop

Text3=s

EndSub

5.在前三個(gè)文本框中輸入三個(gè)數(shù),單擊“面積”按鈕判斷能否構(gòu)成三角形,若能構(gòu)成三角形,則在第四

個(gè)文本框中顯示其面積;否則顯示“不構(gòu)成三角形。

窗體如下:

命令按鈕單擊事件代碼如下:

PrivateSubCommand8_Click()

DimaAsSingle,bAsSingle,cAsSingle,dAsSingle,sAsSingle

a=Textl

b=Text2

c=Text3

Ifa+b>cAnda+c>bAndb+c>aThen

d=(a+b+c)/2

s=Sqr(d*(d-a)*(d-b)*(d-c))

Text4=s

Else

Text4="不構(gòu)成三角形〃

EndIf

EndSub

6.在兩個(gè)文本框中輸入兩個(gè)數(shù),單擊“最小公倍數(shù)”按鈕求出兩個(gè)數(shù)的最小公倍數(shù)并顯示在第一個(gè)文

本框中。

窗體如下:

命令按鈕單擊事件如下:

PrivateSubCommand4Click()

DimxAsInteger,yAsInteger,rAsInteger,tAsInteger

x=Txt1

y=txt2

Ifx<yThen

t=x

x=y

y二t

EndIf

r=xMody

DoWhiler<>0

x=y

y=r

r=xMody

Loop

Txtl=Txtl*txt2/y

EndSub

7.在第一個(gè)文本框中輸入一個(gè)三位數(shù),單擊“判斷”按鈕,判斷其是否是水仙花數(shù)。若是水仙花數(shù)則

在第二個(gè)文本框中顯示“是水仙花數(shù)”,若不是水仙花數(shù)在第二個(gè)文本框中顯示“不是水仙花數(shù)”。

水仙花數(shù)特點(diǎn):原數(shù)二百位數(shù)的立方+十位數(shù)的立方十個(gè)位數(shù)的立方。

例如:153=13+53+33

窗體如下:

命令按鈕單擊事件如下:

PrivateSubCommand4_Click()

DimsAsString,aAsString,bAsString,cAsString

DimxAsInteger,yAsInteger,zAsInteger

s=Textl

a=Mid(s,1,1)

b=Mid(s,2,1)

c=Mid(s,3,1)

x=Vai(a)

y=Vai(b)

z=Vai(c)

IfVai(s)=x*x*x+y*y*y+z*z*zThen

Text2=〃是水仙花數(shù)〃

Else

Text2二〃不是水仙花數(shù)〃

EndIf

EndSub

8.編寫程序?qū)崿F(xiàn)英文字符串的大小寫轉(zhuǎn)換

'解1

PrivateSubchangel()

DimstrlAsString,str2AsString,sAsString

DimiAsInteger,nAsInteger,xAsInteger

strl二InputBox(〃請輸入一個(gè)英文字符串〃,〃大小寫轉(zhuǎn)換〃)

n=Len(strl)

str2=〃〃

Fori=1Ton

s=Mid(strl,i,1)

x=Asc(s)

Ifx<97Then

x=x+32

Else

x=x-32

EndIf

str2=str2+Chr(x)

Nexti

Debug.Printstr2

EndSub

'解2

PrivateSubchange2()

DimstrlAsString,str2AsString,sAsString

DimiAsInteger,nAsInteger,xAsInteger

strl=InputBox(〃請輸入一個(gè)英文字符串〃,〃大小寫轉(zhuǎn)換〃)

n=Len(strl)

str2=〃〃

Fori=1Ton

s=Mid(strl,i,1)

x=Asc(s)

Ifx<97Then

s=LCase(s)

Else

s=UCase(s)

EndIf

str2=str2+s

Nexti

Debug.Printstr2

EndSub

9.輸入10個(gè)數(shù),由小至大排序

PrivateSubrange()

Dima(lTo10)AsInteger

DimiAsInteger,jAsInteger,tAsInteger

Fori=1To10

a(i)=Vai(InputBox("請輸入1—10個(gè)整數(shù)〃))

Nexti

Fori=1To9

Forj=i+1To10

Ifa(i)>a(j)Then

t=a(i)

a(i)=a(j)

a(j)=t

EndIf

Nextj

Nexti

Fori=1To10

Debug.Printa(i)

Nexti

EndSub

10.輸入字符串,顛倒順序顯示

PrivateSubddcx()

Dimstrl,str2,sAsString

Dimi,nAsInteger

strl二InputBox(〃請輸入一個(gè)字符串〃,〃顛倒次序”)

str2="

n=Len(strl)

Fori=1Ton

s=Mid(strl,n-i+1,1)

str2=str2+s

Nexti

Debug.Printstr2

EndSub

第十章補(bǔ)充例題

[補(bǔ)充例題1]若窗體中已有一個(gè)名為Commandl命令按鈕,編寫下面的代碼,窗體運(yùn)行時(shí),單

擊命令按鈕,將顯示什么結(jié)果?

PrivateSubcommandl_click()

s=,ABBACDDCBAM

Fori=6To2Step-2

x=Mid(s,i9i)

y=Left(s,i)

z=Right(s9i)

z=x&y&z

Nexti

MsgBoxz

EndSub

[補(bǔ)充例題2]求sum=l+(l+3)+(l+3+5)+...+(l+3+5+7+...+39)?

PrivateSubcommandl_click()

m=l:sum=0:t=0

Dowhilem<=39

t=t+m:sum=sum+t:m=m+2

loop

Msgboxsum

EndSub

[補(bǔ)充例題3]若窗體中已有一個(gè)名為Commandl命令按鈕,編寫下面的代碼,窗體運(yùn)行時(shí),單

擊命令按鈕,將顯示什么結(jié)果?

Publicxasinteger

PrivateSubcommandl_click()

x=10

Callsi

Calls2

Msgboxx

EndSub

Privatesubsl():x=x+20:endsub

Privatesubs2():dimxasinteger:x=x+20:endsub

[補(bǔ)充例題4]寫出三次單擊命令按鈕后,B的值為多少

PrivateSubcommandl_click()

StaticbAsinteger

B=b+1

MsgBoxb

EndSub

[補(bǔ)充例題5]若窗體中已有一個(gè)名為Command1命令按鈕,一個(gè)名為Labell的標(biāo)簽和一個(gè)名為

textl的文本框,且文本框的內(nèi)容為空,編寫下面的代碼,窗體運(yùn)行時(shí)在文本框中輸入2

溫馨提示

  • 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

提交評論