浙江選考高中信息技術(shù) 過程和函數(shù)專題課件_第1頁
浙江選考高中信息技術(shù) 過程和函數(shù)專題課件_第2頁
浙江選考高中信息技術(shù) 過程和函數(shù)專題課件_第3頁
浙江選考高中信息技術(shù) 過程和函數(shù)專題課件_第4頁
浙江選考高中信息技術(shù) 過程和函數(shù)專題課件_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

算法與程序設(shè)計算法與程序設(shè)計第一章過程和函數(shù)第一章過程和函數(shù)-3--3--4-考點1考點2考點3VB應(yīng)用程序是按模塊化的方式組成的,程序模塊分為過程和函數(shù)兩種。(1)過程中的代碼可以被重復(fù)調(diào)用,但不返回值。事件處理過程定義格式為:Sub對象名_標準事件名(參數(shù)表)語句塊EndSub(2)函數(shù)是類似于過程的另一種程序模塊,不同之處是函數(shù)執(zhí)行完成后,可以返回處理結(jié)果,供程序的后續(xù)部分繼續(xù)處理。自定義函數(shù)定義格式:Function函數(shù)名(參數(shù)表)As類型名語句塊EndFunction-4-考點1考點2考點3VB應(yīng)用程序是按模塊化的方式組成的,-5-考點1考點2考點3【例1】

判斷某年是否為閏年的VB程序如下,在程序中劃線處填入正確的語句。PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)Label1.Caption=

EndSubFunctionleapyear(yearAsInteger)AsStringIfyearMod4=0AndyearMod100<>0OryearMod400=0Then

leapyear=″是閏年!″Else

leapyear=″不是閏年!″EndIfEndFunction-5-考點1考點2考點3【例1】判斷某年是否為閏年的VB程-6-考點1考點2考點3答案:leapyear(x)解析:本題考查的是關(guān)于自定義函數(shù)的知識點。leapyear是個自定義函數(shù),參數(shù)是一個整數(shù)year,返回值是字符串。該函數(shù)功能是判斷year是否為閏年,如果是閏年,返回值為“是閏年!”,否則返回值為“不是閏年!”Command1_Click是事件處理過程,其中x是用戶輸入的年份,label1上顯示x是否為閏年,所以判斷x是否為閏年可以調(diào)用函數(shù)leapyear,參數(shù)是x,即leapyear(x)。-6-考點1考點2考點3答案:leapyear(x)-7-考點1考點2考點3【例2】

有如下VisualBasic程序:Functionfx(aassingle,bassingle,cassingle)asstringifb^2-4*a*c>=0then

f1=(-b+sqr(b^2-4*a*c))/(2*a)

f2=(-b-sqr(b^2-4*a*c))/(2*a)

fx=″根1=″&f1&″,根2=″&f2else

fx=″方程無實根″endifEndFunctionPrivateSubCommand1_Click()dimaassingle,bassingle,cassinglea=val(text1.text)b=val(text2.text)c=val(text3.text)label4.caption=fx(a,b,c)EndSub-7-考點1考點2考點3【例2】有如下VisualBas-8-考點1考點2考點3運行程序后,在文本框text1、text2、text3中分別輸入1、3、2,單擊按鈕Command1,則在label4中顯示(

)A.-1,-2 B.-2,-1C.根1=-1,根2=-2 D.根1=-2,根2=-1答案:C解析:自定義函數(shù)fx的功能是計算一元二次方程的根,調(diào)用時給定3個值,根返回的形式是“根1=***,根2=***”。-8-考點1考點2考點3運行程序后,在文本框text1、te-9-考點1考點2考點3在一個子程序(過程或函數(shù))的定義中直接或間接地調(diào)用該子程序本身(即自己調(diào)用自己)的算法,稱為遞歸算法。-9-考點1考點2考點3在一個子程序(過程或函數(shù))的定義中直-10-考點1考點2考點3【例3】

以下自定義函數(shù)用以計算n的階乘n!,即計算前n個自然數(shù)的乘積:Function

f(nAsInteger)AsInteger

If

n=1

Then

f=1

Else

f=n*f(n-1)

EndIfEndFunction該自定義函數(shù)采用的算法是(

)A.枚舉算法 B.解析算法C.遞歸算法 D.查找算法-10-考點1考點2考點3【例3】以下自定義函數(shù)用以計算n-11-考點1考點2考點3答案:C解析:程序中f是自定義函數(shù),函數(shù)內(nèi)部語句“f

=

n*f(n-1)”調(diào)用函數(shù)自身,因此該自定義函數(shù)采用的算法是遞歸算法。-11-考點1考點2考點3答案:C-12-考點1考點2考點3【例4】

用遞歸算法求1~n個連續(xù)自然數(shù)的和的VB程序段代碼如下。Functionsum(nAInteger)AInteger'求1~n個連續(xù)自然數(shù)的和Ifn=1Thensum=1Elsesum=

EndIf-12-考點1考點2考點3【例4】用遞歸算法求1~n個-13-考點1考點2考點3EndFunctionPrivateSubCommand1_Click()n=text1.texttext2.text=str(sum(n))EndSub劃線處應(yīng)填入的語句是(

)A.n+sum(n-1) B.sum(n-1)C.n+sum(n) D.sum+n答案:A解析:n個自然數(shù)的和=n+前n-1項數(shù)字的和,遞歸的算法即為n+sum(n-1)。-13-考點1考點2考點3EndFunction-14-考點1考點2考點3ADO(ActivexDataObjiects)是微軟公司提供的一種應(yīng)用程序訪問數(shù)據(jù)庫的編程接口。該接口包含了多個對象,其中Connection對象用于與數(shù)據(jù)庫的連接,在建立連接后,可以通過Recordset對象獲取數(shù)據(jù)表中數(shù)據(jù)。ADO訪問Access數(shù)據(jù)庫的基本過程是:(1)通過Connection連接數(shù)據(jù)庫。在用Connection建立與數(shù)據(jù)庫的連接時,需要設(shè)置ConnectionString屬性的值(即連接字符串),以指定連接數(shù)據(jù)庫所用的驅(qū)動程序、數(shù)據(jù)源名稱、用戶名和密碼等。下列語句定義一個Connection對象的實例conn,并設(shè)置conn的連接字符串。-14-考點1考點2考點3ADO(ActivexData-15-考點1考點2考點3DimconnAsNewADODB.Connectionconn.ConnectionString=″provider=Microsoft.ACE.OLEDB.12.0;DATASource=″&App.Path&″\數(shù)據(jù)庫名.accdb″conn.open其中,“provider”用于指定連接的提供者(Microsoft.ACE.OLEDB.12.0可以訪問Access2010數(shù)據(jù)庫),“DATASource”用于指定數(shù)據(jù)庫的文件名(含絕對路徑)?!癆pp.Path”返回當前應(yīng)用程序所在的絕對路徑。Connection對象具有Open、Close等方法,其中Open方法用于打開到數(shù)據(jù)源的連接,Close方法用于關(guān)閉連接。-15-考點1考點2考點3DimconnAsNewA-16-考點1考點2考點3(2)通過Recordset對象獲取數(shù)據(jù)庫中的數(shù)據(jù)。在用Recordset對象從數(shù)據(jù)庫中獲取數(shù)據(jù)時,首先要定義Recordset對象的實例,再設(shè)置ActiveConnection屬性的值。DimrsAsNewADODB.RecordsetSetrs.ActiveConnection=connrs.open″select*from數(shù)據(jù)表名″語句“Setrs.ActiveConnection=conn”,使Recordset對象的實例rs同Connection對象conn建立關(guān)聯(lián)。然后利用Recordset對象的Open方法打開數(shù)據(jù)表,并將SQL語句“select*from數(shù)據(jù)表名”查詢結(jié)果保存到記錄集rs中。Recordset對象的Close方法關(guān)閉記錄集。-16-考點1考點2考點3(2)通過Recordset對象獲-17-考點1考點2考點3Recordset對象的Fields集合用于返回當前記錄中的字段值,例如,rs.Fields(“姓名”)返回當前記錄中姓名字段的值。rs.Fields(0)返回當前記錄中第一個字段的值,如果第一個字段名為“姓名”,那么rs.Fields(0)與rs.Fields(“姓名”)返回值相同。Recordset對象的MoveNext方法用于把當前記錄指針移到下一條記錄。若到數(shù)據(jù)表結(jié)尾還繼續(xù)向下移動,程序會出錯,因此在使用MoveNext前要判斷Recordset的EOF屬性,如果Recordset.EOF=True,表明記錄已在最后一條。-17-考點1考點2考點3Recordset對象的Field-18-考點1考點2考點3【例5】

設(shè)計一個成績查詢的VB程序,學(xué)生成績數(shù)據(jù)表的結(jié)構(gòu)與部分數(shù)據(jù)如下:-18-考點1考點2考點3【例5】設(shè)計一個成績查詢的VB程-19-考點1考點2考點3程序界面如下圖所示,在文本框text1中輸入學(xué)生姓名后,單擊“查詢”按鈕后,在標簽label3中顯示學(xué)生的相應(yīng)成績。-19-考點1考點2考點3程序界面如下圖所示,在文本框tex-20-考點1考點2考點3(1)下面是其相應(yīng)程序,請在劃線處填入正確的語句。PrivateSubCommand1_Click()DimconnAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetdimsNameasstringconn.ConnectionString=″provider=microsoft.ace.oledb.12.0;datasource=″+App.Path+″\student.accdb″conn.OpenSetrs.ActiveConnection=connrs.Open″select*fromscore″sName=text1.text-20-考點1考點2考點3(1)下面是其相應(yīng)程序,請在劃線處-21-考點1考點2考點3DoWhileNotrs.EOF

ifrs.Fields(″姓名″)=sNamethen

label3.caption=①

exitdo

else

rs.MoveNext

endif

Loopif②

thenlabel3.caption=″查無此人!″

rs.Closeconn.CloseEndSub(2)由程序可知,打開的數(shù)據(jù)庫文件名為

,數(shù)據(jù)表名是

。

-21-考點1考點2考點3DoWhileNotrs.E-22-考點1考點2考點3答案:(1)①rs.Fields(″期中成績″)或rs.Fields(3)②rs.eof或rs.eof=true

(2)student.accdb

score解析:本題考查的是利用ADO查詢數(shù)據(jù)庫的相關(guān)知識點。程序首先定義數(shù)據(jù)庫連接對象conn和記錄集對象rs,利用conn.ConnectionString和conn.Open兩語句打開數(shù)據(jù)庫“student.accdb”,利用Set

rs.ActiveConnection

=

conn和rs.Open打開數(shù)據(jù)表“score”。再使用do

while循環(huán)查詢每條記錄,如果當前記錄的“姓名”字段值為搜索姓名,則使用rs.Fields(″期中成績″)顯示期中成績,期中成績在表中是第4個字段,所以也可用rs.Fields(3)獲取期中成績,找到記錄結(jié)束循環(huán)。如果記錄指針移到表結(jié)尾(即rs.eof=true)仍未找到,顯示“查無此人”。-22-考點1考點2考點3答案:(1)①rs.Fields(-23-123456789101.有如下VisualBasic自定義函數(shù):Functionmax(xasintger,yasinteger)asintegerifx>ythenmax=xelsemax=yEndFunction關(guān)于該函數(shù)說法不正確的是(

)A.該自定義函數(shù)名稱是maxB.函數(shù)返回一個整型數(shù)據(jù)C.該自定義函數(shù)返回參數(shù)x、y中的較小數(shù)D.調(diào)用該自定義函數(shù)需要2個參數(shù)答案解析解析關(guān)閉該自定義函數(shù)返回參數(shù)x、y中的較大數(shù)。答案解析關(guān)閉C-23-123456789101.有如下VisualBas-24-123456789102.有以下VB自定義函數(shù):Functionfx(xasinteger)

ifxmod2thenfx=x&″是偶數(shù)″elsefx=x&″是奇數(shù)″EndFunction則程序劃線處應(yīng)填入的代碼是(

)A.asinteger B.asBooleanC.asstring D.assingle答案解析解析關(guān)閉本題要求補全自定義函數(shù)返回值的類型。由自定義函數(shù)的語句體可知,fx運算的結(jié)果是字符串,所以函數(shù)返回值的類型是string。答案解析關(guān)閉C-24-123456789102.有以下VB自定義函數(shù):-25-123456789103.有如下VisualBasic程序:Functionjc(nasinteger)aslongdimsaslongs=1fori=1tons=s*inextjc=sEndFunction-25-123456789103.有如下VisualBas-26-12345678910PrivateSubCommand1_Click()dimsaslong,nasintegers=0n=val(text1.text)fori=1tons=s+jc(i)nextlabel1.caption=str(s)EndSub運行程序后,在文本框text1中輸入5,單擊按鈕Command1,則在label1中顯示(

)A.15 B.120 C.5 D.153答案解析解析關(guān)閉自定義函數(shù)jc的功能是計算n的階乘,即n!=1*2*…*n,Command1_Click過程的功能是計算s=1!+2!+3!+…+n!。答案解析關(guān)閉D-26-12345678910PrivateSubCom-27-123456789104.下列VB程序用于求2個正整數(shù)x、y的最大公約數(shù),最大公約數(shù)顯示在文本框text3中。PrivateSubCommand1_Click()dimxasinteger,yasinteger,zasintegerx=val(text1.text)y=val(text2.text)

text3.text=str(z)EndsubFunctiongcd(aasinteger,basinteger)asintegerdowhilea<>bifa>bthena=a-belseb=b-aloopgcd=bEndFunction-27-123456789104.下列VB程序用于求2個正整-28-12345678910劃線處正確的語句是(

)A.z=gcd B.z=gcd(a,b)C.z=gcd(x,y) D.z=gcdx,y答案解析解析關(guān)閉劃線處程序調(diào)用函數(shù)gcd用以求出x,y的公約數(shù)z,所以語句是z=gcd(x,y)。答案解析關(guān)閉C-28-12345678910劃線處正確的語句是()-29-123456789105.下列說法錯誤的是(

)A.遞歸函數(shù)中可以不包含條件控制語句B.遞歸算法代碼一般較少C.遞歸算法一定要有終止條件D.遞歸函數(shù)內(nèi)部必定存在調(diào)用自身函數(shù)的語句答案解析解析關(guān)閉遞歸函數(shù)中必須包含條件控制語句,作為遞歸結(jié)束的條件。答案解析關(guān)閉A-29-123456789105.下列說法錯誤的是()-30-123456789106.有5個人坐在一起,問第5個人多少歲?他說比第4個人大2歲,問第4個人歲數(shù),他說比第3個人大2歲,問第3個人歲數(shù),他說比第2個人大2歲,問第2個人歲數(shù),他說比第1個人大2歲,問第1個人歲數(shù),他說他10歲,請問第5個人多大?解決上述問題的VB程序代碼如下:PublicFunctionage(nAsInteger)AsLongIfn=1Then

age=10Else

age=age(n-1)+2EndIfEndFunctionPrivateSubCommand1_Click()MsgBox″第五個人的年齡為″+Str(age(5))EndSub-30-123456789106.有5個人坐在一起,問第5個-31-12345678910程序中自定義函數(shù)采用的算法是(

)A.枚舉算法 B.解析算法C.遞歸算法 D.查找算法答案解析解析關(guān)閉程序中age是自定義函數(shù),函數(shù)內(nèi)部語句“age=age(n-1)+2”調(diào)用函數(shù)自身,因此該自定義函數(shù)采用的算法是遞歸算法。答案解析關(guān)閉C-31-12345678910程序中自定義函數(shù)采用的算法是(-32-123456789107.下列表示“將指針移到記錄集對象rs的下一條記錄”的語句是(

)A.rs.open B.rs.movenextC.rs.eof D.rs.close答案解析解析關(guān)閉rs.open是打開記錄集,rs.close是關(guān)閉記錄集,rs.eof表示記錄集結(jié)尾屬性。答案解析關(guān)閉B-32-123456789107.下列表示“將指針移到記錄集-33-123456789108.現(xiàn)有一個字符串轉(zhuǎn)換程序,在文本框Text1中輸入原始字符串,單擊“轉(zhuǎn)換”按鈕Command1后,將其中的小寫英文字母轉(zhuǎn)換為大寫,并在文本框Text2中顯示。程序運行效果如下圖所示。-33-123456789108.現(xiàn)有一個字符串轉(zhuǎn)換程序,在-34-12345678910實現(xiàn)上述功能的VB代碼如下,請在劃線處填入正確的語句。PrivateSubCommand1_Click()

DimaAsString,bAsString,cAsString,iAsInteger

a=Text1.Text

Fori=1ToLen(a)c=Mid(a,i,1)①

Nexti②

EndSub-34-12345678910實現(xiàn)上述功能的VB代碼如下,請-35-12345678910PrivateFunctionupcase(cAsString)AsString'將小寫字母轉(zhuǎn)換為大寫字母Ifc>=″a″Andc<=″z″Thenupcase=Chr(Asc(c)-32)Elseupcase=c

EndIfEndFunction-35-12345678910PrivateFunctio-36-12345678910答案:①b=b+upcase(c)或b=b&upcase(c)

②Text2.text=b解析:自定義函數(shù)upcase的功能是將小寫字母轉(zhuǎn)換為大寫字母。①處循環(huán)功能是把字符串a(chǎn)中的每個英文字母轉(zhuǎn)換為大寫字母,轉(zhuǎn)換方法是每次取出1個字符c,然后調(diào)用函數(shù)upcase(c)轉(zhuǎn)換為大寫字母,并存入變量b中。循環(huán)結(jié)束把轉(zhuǎn)換后的字符串顯示在文本框text2中。-36-12345678910答案:①b=b+upcas-37-123456789109.下列程序的功能是將文本框text1中輸入的自然數(shù)分解為3個互不相同的質(zhì)數(shù)(三個質(zhì)數(shù)的和等于輸入的自然數(shù)),并把分解產(chǎn)生的質(zhì)數(shù)按升序順序顯示在左邊的列表框中。

例如,輸入20,單擊“開始處理”按鈕Command1,在列表框中顯示如圖所示結(jié)果。-37-123456789109.下列程序的功能是將文本框t-38-12345678910請在下列程序代碼的基礎(chǔ)上按照要求,完善程序中的劃線部分。Functionprime(xAsInteger)AsBoolean'函數(shù)prime(x)的功能是判斷x是否為質(zhì)數(shù),如果是返回值為true,否則返回值為false。Fori=2Tox\2IfxModi=0

ThenExitForEndIfNexti

if①

thenprime=trueelseprime=false

EndFunctionPrivateSubCommand1_Click()

dimnasinteger,a1asinteger,a2asinteger,a3asinteger-38-12345678910請在下列程序代碼的基礎(chǔ)上按照要-39-12345678910

n=val(text1.text)

fora1=2ton

fora2=a1ton

fora3=a2ton

ifa1+a2+a3=nand②

then

list1.additemstr(a1)+str(a2)+str(a3)

endif

nexta3

nexta2

nexta1EndSub-39-12345678910n=val(text1.te-40-12345678910答案:①i>x\2

②prime(a1)andprime(a2)andprime(a3)解析:函數(shù)prime(x)的功能是判斷是否為質(zhì)數(shù),如果是質(zhì)數(shù)則返回值為true,否則返回值為false。

如果x能被2到x\2中的一個數(shù)整除,

則x不是質(zhì)數(shù),退出循環(huán),此時循環(huán)變量i的值必定小于等于x\2;如果x不能被2到x\2中的任何一個數(shù)整除,則循環(huán)結(jié)束時,i的值必定大于x\2,所以可以根據(jù)i的值判定x是否為質(zhì)數(shù),即i>x\2,x是質(zhì)數(shù),否則不是質(zhì)數(shù)。②符合條件的解需要滿足4個條件:a1、a2、a3都是質(zhì)數(shù),a1、a2、a3的和等于被分解的自然數(shù)。-40-12345678910答案:①i>x\2②pri-41-1234567891010.用VB程序制作一個用于統(tǒng)計學(xué)生信息技術(shù)成績的程序。學(xué)生成績存放在數(shù)據(jù)庫“成績.accdb”的表“信息技術(shù)”中,程序界面和數(shù)據(jù)表如下圖所示。-41-1234567891010.用VB程序制作一個用于統(tǒng)-42-12345678910程序的功能是單擊統(tǒng)計按鈕Command1,在列表框list1中顯示所有學(xué)生成績,在文本框text1、text2、text3中分別顯示平均分、最高分和最低分。程序清單如下:PrivateSubCommand1_Click()DimconnAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimnAsInteger'n存放人數(shù)DimsAsInteger's存放總分DimavgAsSingle'avg存放平均分DimmaxAsInteger,minAsInteger,xasIntegerconn.ConnectionString=″provider=microsoft.ace.oledb.12.0;datasource=″&App.Path&″\成績.accdb″-42-12345678910程序的功能是單擊統(tǒng)計按鈕Com-43-12345678910conn.OpenSetrs.ActiveConnection=connrs.Open″select*from信息技術(shù)″s=0max=0min=100n=0DoWhileNotrs.EOFx=rs.Fields(″成績″)List1.AddItemStr(x)s=①

If②

Thenmax=x

-43-12345678910conn.Open-44-12345678910Ifx<minThenmin=xn=n+1rs.MoveNextLooprs.Close:conn.Closeavg=③

Text1.Text=④

Text2.Text=Str(max)Text3.Text=Str(min)EndSub在程序劃線處填入正確的語句。-44-12345678910Ifx<minThen-45-12345678910答案:①s+x

②x>max

③s/n

④Str(avg)解析:第1空完成的功能是把從數(shù)據(jù)表中讀取的成績x累加到s中,即用來計算總分s。第2空完成的功能是判斷當前取得的分數(shù)x是否大于max,如果是則把x存入max。第3空完成的功能是計算平均分,平均分=總分/人數(shù)=s/n。第4空完成的功能是把平均分avg顯示在文本框text1中。-45-12345678910答案:①s+x②x>max

算法與程序設(shè)計算法與程序設(shè)計第一章過程和函數(shù)第一章過程和函數(shù)-48--3--49-考點1考點2考點3VB應(yīng)用程序是按模塊化的方式組成的,程序模塊分為過程和函數(shù)兩種。(1)過程中的代碼可以被重復(fù)調(diào)用,但不返回值。事件處理過程定義格式為:Sub對象名_標準事件名(參數(shù)表)語句塊EndSub(2)函數(shù)是類似于過程的另一種程序模塊,不同之處是函數(shù)執(zhí)行完成后,可以返回處理結(jié)果,供程序的后續(xù)部分繼續(xù)處理。自定義函數(shù)定義格式:Function函數(shù)名(參數(shù)表)As類型名語句塊EndFunction-4-考點1考點2考點3VB應(yīng)用程序是按模塊化的方式組成的,-50-考點1考點2考點3【例1】

判斷某年是否為閏年的VB程序如下,在程序中劃線處填入正確的語句。PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)Label1.Caption=

EndSubFunctionleapyear(yearAsInteger)AsStringIfyearMod4=0AndyearMod100<>0OryearMod400=0Then

leapyear=″是閏年!″Else

leapyear=″不是閏年!″EndIfEndFunction-5-考點1考點2考點3【例1】判斷某年是否為閏年的VB程-51-考點1考點2考點3答案:leapyear(x)解析:本題考查的是關(guān)于自定義函數(shù)的知識點。leapyear是個自定義函數(shù),參數(shù)是一個整數(shù)year,返回值是字符串。該函數(shù)功能是判斷year是否為閏年,如果是閏年,返回值為“是閏年!”,否則返回值為“不是閏年!”Command1_Click是事件處理過程,其中x是用戶輸入的年份,label1上顯示x是否為閏年,所以判斷x是否為閏年可以調(diào)用函數(shù)leapyear,參數(shù)是x,即leapyear(x)。-6-考點1考點2考點3答案:leapyear(x)-52-考點1考點2考點3【例2】

有如下VisualBasic程序:Functionfx(aassingle,bassingle,cassingle)asstringifb^2-4*a*c>=0then

f1=(-b+sqr(b^2-4*a*c))/(2*a)

f2=(-b-sqr(b^2-4*a*c))/(2*a)

fx=″根1=″&f1&″,根2=″&f2else

fx=″方程無實根″endifEndFunctionPrivateSubCommand1_Click()dimaassingle,bassingle,cassinglea=val(text1.text)b=val(text2.text)c=val(text3.text)label4.caption=fx(a,b,c)EndSub-7-考點1考點2考點3【例2】有如下VisualBas-53-考點1考點2考點3運行程序后,在文本框text1、text2、text3中分別輸入1、3、2,單擊按鈕Command1,則在label4中顯示(

)A.-1,-2 B.-2,-1C.根1=-1,根2=-2 D.根1=-2,根2=-1答案:C解析:自定義函數(shù)fx的功能是計算一元二次方程的根,調(diào)用時給定3個值,根返回的形式是“根1=***,根2=***”。-8-考點1考點2考點3運行程序后,在文本框text1、te-54-考點1考點2考點3在一個子程序(過程或函數(shù))的定義中直接或間接地調(diào)用該子程序本身(即自己調(diào)用自己)的算法,稱為遞歸算法。-9-考點1考點2考點3在一個子程序(過程或函數(shù))的定義中直-55-考點1考點2考點3【例3】

以下自定義函數(shù)用以計算n的階乘n!,即計算前n個自然數(shù)的乘積:Function

f(nAsInteger)AsInteger

If

n=1

Then

f=1

Else

f=n*f(n-1)

EndIfEndFunction該自定義函數(shù)采用的算法是(

)A.枚舉算法 B.解析算法C.遞歸算法 D.查找算法-10-考點1考點2考點3【例3】以下自定義函數(shù)用以計算n-56-考點1考點2考點3答案:C解析:程序中f是自定義函數(shù),函數(shù)內(nèi)部語句“f

=

n*f(n-1)”調(diào)用函數(shù)自身,因此該自定義函數(shù)采用的算法是遞歸算法。-11-考點1考點2考點3答案:C-57-考點1考點2考點3【例4】

用遞歸算法求1~n個連續(xù)自然數(shù)的和的VB程序段代碼如下。Functionsum(nAInteger)AInteger'求1~n個連續(xù)自然數(shù)的和Ifn=1Thensum=1Elsesum=

EndIf-12-考點1考點2考點3【例4】用遞歸算法求1~n個-58-考點1考點2考點3EndFunctionPrivateSubCommand1_Click()n=text1.texttext2.text=str(sum(n))EndSub劃線處應(yīng)填入的語句是(

)A.n+sum(n-1) B.sum(n-1)C.n+sum(n) D.sum+n答案:A解析:n個自然數(shù)的和=n+前n-1項數(shù)字的和,遞歸的算法即為n+sum(n-1)。-13-考點1考點2考點3EndFunction-59-考點1考點2考點3ADO(ActivexDataObjiects)是微軟公司提供的一種應(yīng)用程序訪問數(shù)據(jù)庫的編程接口。該接口包含了多個對象,其中Connection對象用于與數(shù)據(jù)庫的連接,在建立連接后,可以通過Recordset對象獲取數(shù)據(jù)表中數(shù)據(jù)。ADO訪問Access數(shù)據(jù)庫的基本過程是:(1)通過Connection連接數(shù)據(jù)庫。在用Connection建立與數(shù)據(jù)庫的連接時,需要設(shè)置ConnectionString屬性的值(即連接字符串),以指定連接數(shù)據(jù)庫所用的驅(qū)動程序、數(shù)據(jù)源名稱、用戶名和密碼等。下列語句定義一個Connection對象的實例conn,并設(shè)置conn的連接字符串。-14-考點1考點2考點3ADO(ActivexData-60-考點1考點2考點3DimconnAsNewADODB.Connectionconn.ConnectionString=″provider=Microsoft.ACE.OLEDB.12.0;DATASource=″&App.Path&″\數(shù)據(jù)庫名.accdb″conn.open其中,“provider”用于指定連接的提供者(Microsoft.ACE.OLEDB.12.0可以訪問Access2010數(shù)據(jù)庫),“DATASource”用于指定數(shù)據(jù)庫的文件名(含絕對路徑)?!癆pp.Path”返回當前應(yīng)用程序所在的絕對路徑。Connection對象具有Open、Close等方法,其中Open方法用于打開到數(shù)據(jù)源的連接,Close方法用于關(guān)閉連接。-15-考點1考點2考點3DimconnAsNewA-61-考點1考點2考點3(2)通過Recordset對象獲取數(shù)據(jù)庫中的數(shù)據(jù)。在用Recordset對象從數(shù)據(jù)庫中獲取數(shù)據(jù)時,首先要定義Recordset對象的實例,再設(shè)置ActiveConnection屬性的值。DimrsAsNewADODB.RecordsetSetrs.ActiveConnection=connrs.open″select*from數(shù)據(jù)表名″語句“Setrs.ActiveConnection=conn”,使Recordset對象的實例rs同Connection對象conn建立關(guān)聯(lián)。然后利用Recordset對象的Open方法打開數(shù)據(jù)表,并將SQL語句“select*from數(shù)據(jù)表名”查詢結(jié)果保存到記錄集rs中。Recordset對象的Close方法關(guān)閉記錄集。-16-考點1考點2考點3(2)通過Recordset對象獲-62-考點1考點2考點3Recordset對象的Fields集合用于返回當前記錄中的字段值,例如,rs.Fields(“姓名”)返回當前記錄中姓名字段的值。rs.Fields(0)返回當前記錄中第一個字段的值,如果第一個字段名為“姓名”,那么rs.Fields(0)與rs.Fields(“姓名”)返回值相同。Recordset對象的MoveNext方法用于把當前記錄指針移到下一條記錄。若到數(shù)據(jù)表結(jié)尾還繼續(xù)向下移動,程序會出錯,因此在使用MoveNext前要判斷Recordset的EOF屬性,如果Recordset.EOF=True,表明記錄已在最后一條。-17-考點1考點2考點3Recordset對象的Field-63-考點1考點2考點3【例5】

設(shè)計一個成績查詢的VB程序,學(xué)生成績數(shù)據(jù)表的結(jié)構(gòu)與部分數(shù)據(jù)如下:-18-考點1考點2考點3【例5】設(shè)計一個成績查詢的VB程-64-考點1考點2考點3程序界面如下圖所示,在文本框text1中輸入學(xué)生姓名后,單擊“查詢”按鈕后,在標簽label3中顯示學(xué)生的相應(yīng)成績。-19-考點1考點2考點3程序界面如下圖所示,在文本框tex-65-考點1考點2考點3(1)下面是其相應(yīng)程序,請在劃線處填入正確的語句。PrivateSubCommand1_Click()DimconnAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetdimsNameasstringconn.ConnectionString=″provider=microsoft.ace.oledb.12.0;datasource=″+App.Path+″\student.accdb″conn.OpenSetrs.ActiveConnection=connrs.Open″select*fromscore″sName=text1.text-20-考點1考點2考點3(1)下面是其相應(yīng)程序,請在劃線處-66-考點1考點2考點3DoWhileNotrs.EOF

ifrs.Fields(″姓名″)=sNamethen

label3.caption=①

exitdo

else

rs.MoveNext

endif

Loopif②

thenlabel3.caption=″查無此人!″

rs.Closeconn.CloseEndSub(2)由程序可知,打開的數(shù)據(jù)庫文件名為

,數(shù)據(jù)表名是

。

-21-考點1考點2考點3DoWhileNotrs.E-67-考點1考點2考點3答案:(1)①rs.Fields(″期中成績″)或rs.Fields(3)②rs.eof或rs.eof=true

(2)student.accdb

score解析:本題考查的是利用ADO查詢數(shù)據(jù)庫的相關(guān)知識點。程序首先定義數(shù)據(jù)庫連接對象conn和記錄集對象rs,利用conn.ConnectionString和conn.Open兩語句打開數(shù)據(jù)庫“student.accdb”,利用Set

rs.ActiveConnection

=

conn和rs.Open打開數(shù)據(jù)表“score”。再使用do

while循環(huán)查詢每條記錄,如果當前記錄的“姓名”字段值為搜索姓名,則使用rs.Fields(″期中成績″)顯示期中成績,期中成績在表中是第4個字段,所以也可用rs.Fields(3)獲取期中成績,找到記錄結(jié)束循環(huán)。如果記錄指針移到表結(jié)尾(即rs.eof=true)仍未找到,顯示“查無此人”。-22-考點1考點2考點3答案:(1)①rs.Fields(-68-123456789101.有如下VisualBasic自定義函數(shù):Functionmax(xasintger,yasinteger)asintegerifx>ythenmax=xelsemax=yEndFunction關(guān)于該函數(shù)說法不正確的是(

)A.該自定義函數(shù)名稱是maxB.函數(shù)返回一個整型數(shù)據(jù)C.該自定義函數(shù)返回參數(shù)x、y中的較小數(shù)D.調(diào)用該自定義函數(shù)需要2個參數(shù)答案解析解析關(guān)閉該自定義函數(shù)返回參數(shù)x、y中的較大數(shù)。答案解析關(guān)閉C-23-123456789101.有如下VisualBas-69-123456789102.有以下VB自定義函數(shù):Functionfx(xasinteger)

ifxmod2thenfx=x&″是偶數(shù)″elsefx=x&″是奇數(shù)″EndFunction則程序劃線處應(yīng)填入的代碼是(

)A.asinteger B.asBooleanC.asstring D.assingle答案解析解析關(guān)閉本題要求補全自定義函數(shù)返回值的類型。由自定義函數(shù)的語句體可知,fx運算的結(jié)果是字符串,所以函數(shù)返回值的類型是string。答案解析關(guān)閉C-24-123456789102.有以下VB自定義函數(shù):-70-123456789103.有如下VisualBasic程序:Functionjc(nasinteger)aslongdimsaslongs=1fori=1tons=s*inextjc=sEndFunction-25-123456789103.有如下VisualBas-71-12345678910PrivateSubCommand1_Click()dimsaslong,nasintegers=0n=val(text1.text)fori=1tons=s+jc(i)nextlabel1.caption=str(s)EndSub運行程序后,在文本框text1中輸入5,單擊按鈕Command1,則在label1中顯示(

)A.15 B.120 C.5 D.153答案解析解析關(guān)閉自定義函數(shù)jc的功能是計算n的階乘,即n!=1*2*…*n,Command1_Click過程的功能是計算s=1!+2!+3!+…+n!。答案解析關(guān)閉D-26-12345678910PrivateSubCom-72-123456789104.下列VB程序用于求2個正整數(shù)x、y的最大公約數(shù),最大公約數(shù)顯示在文本框text3中。PrivateSubCommand1_Click()dimxasinteger,yasinteger,zasintegerx=val(text1.text)y=val(text2.text)

text3.text=str(z)EndsubFunctiongcd(aasinteger,basinteger)asintegerdowhilea<>bifa>bthena=a-belseb=b-aloopgcd=bEndFunction-27-123456789104.下列VB程序用于求2個正整-73-12345678910劃線處正確的語句是(

)A.z=gcd B.z=gcd(a,b)C.z=gcd(x,y) D.z=gcdx,y答案解析解析關(guān)閉劃線處程序調(diào)用函數(shù)gcd用以求出x,y的公約數(shù)z,所以語句是z=gcd(x,y)。答案解析關(guān)閉C-28-12345678910劃線處正確的語句是()-74-123456789105.下列說法錯誤的是(

)A.遞歸函數(shù)中可以不包含條件控制語句B.遞歸算法代碼一般較少C.遞歸算法一定要有終止條件D.遞歸函數(shù)內(nèi)部必定存在調(diào)用自身函數(shù)的語句答案解析解析關(guān)閉遞歸函數(shù)中必須包含條件控制語句,作為遞歸結(jié)束的條件。答案解析關(guān)閉A-29-123456789105.下列說法錯誤的是()-75-123456789106.有5個人坐在一起,問第5個人多少歲?他說比第4個人大2歲,問第4個人歲數(shù),他說比第3個人大2歲,問第3個人歲數(shù),他說比第2個人大2歲,問第2個人歲數(shù),他說比第1個人大2歲,問第1個人歲數(shù),他說他10歲,請問第5個人多大?解決上述問題的VB程序代碼如下:PublicFunctionage(nAsInteger)AsLongIfn=1Then

age=10Else

age=age(n-1)+2EndIfEndFunctionPrivateSubCommand1_Click()MsgBox″第五個人的年齡為″+Str(age(5))EndSub-30-123456789106.有5個人坐在一起,問第5個-76-12345678910程序中自定義函數(shù)采用的算法是(

)A.枚舉算法 B.解析算法C.遞歸算法 D.查找算法答案解析解析關(guān)閉程序中age是自定義函數(shù),函數(shù)內(nèi)部語句“age=age(n-1)+2”調(diào)用函數(shù)自身,因此該自定義函數(shù)采用的算法是遞歸算法。答案解析關(guān)閉C-31-12345678910程序中自定義函數(shù)采用的算法是(-77-123456789107.下列表示“將指針移到記錄集對象rs的下一條記錄”的語句是(

)A.rs.open B.rs.movenextC.rs.eof D.rs.close答案解析解析關(guān)閉rs.open是打開記錄集,rs.close是關(guān)閉記錄集,rs.eof表示記錄集結(jié)尾屬性。答案解析關(guān)閉B-32-123456789107.下列表示“將指針移到記錄集-78-123456789108.現(xiàn)有一個字符串轉(zhuǎn)換程序,在文本框Text1中輸入原始字符串,單擊“轉(zhuǎn)換”按鈕Command1后,將其中的小寫英文字母轉(zhuǎn)換為大寫,并在文本框Text2中顯示。程序運行效果如下圖所示。-33-123456789108.現(xiàn)有一個字符串轉(zhuǎn)換程序,在-79-12345678910實現(xiàn)上述功能的VB代碼如下,請在劃線處填入正確的語句。PrivateSubCommand1_Click()

DimaAsString,bAsString,cAsString,iAsInteger

a=Text1.Text

Fori=1ToLen(a)c=Mid(a,i,1)①

Nexti②

EndSub-34-12345678910實現(xiàn)上述功能的VB代碼如下,請-80-12345678910PrivateFunctionupcase(cAsString)AsString'將小寫字母轉(zhuǎn)換為大寫字母Ifc>=″a″Andc<=″z″Thenupcase=Chr(Asc(c)-32)Elseupcase=c

EndIfEndFunction-35-12345678910PrivateFunctio-81-12345678910答案:①b=b+upcase(c)或b=b&upcase(c)

②Text2.text=b解析:自定義函數(shù)upcase的功能是將小寫字母轉(zhuǎn)換為大寫字母。①處循環(huán)功能是把字符串a(chǎn)中的每個英文字母轉(zhuǎn)換為大寫字母,轉(zhuǎn)換方法是每次取出1個字符c,然后調(diào)用函數(shù)upcase(c)轉(zhuǎn)換為大寫字母,并存入變量b中。循環(huán)結(jié)束把轉(zhuǎn)換后的字符串顯示在文本框text2中。-36-12345678910答案:①b=b+upcas-82-123456789109.下列程序的功能是將文本框text1中輸入的自然數(shù)分解為3個互不相同的質(zhì)數(shù)(三個質(zhì)數(shù)的和等于輸入的自然數(shù)),并把分解產(chǎn)生的質(zhì)數(shù)按升序順序顯示在左邊的列表框中。

例如,輸入20,單擊“開始處理”按鈕Command1,在列表框中顯示如圖所示結(jié)果。-37-123456789109.下列程序的功能是將文本框t-83-12

溫馨提示

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

評論

0/150

提交評論