資源簡(jiǎn)介 選修一第四章VB程序設(shè)計(jì)初級(jí)章末習(xí)題(較難程度) 從數(shù)組元素a(1)開(kāi)始,按詞典順序存儲(chǔ)若干英語(yǔ)單詞(單詞均小寫(xiě),升序).初始時(shí),數(shù)組元素b(0)值為0,b(1)~b(26)分別存儲(chǔ)首字母為a、b、c、……、z的單詞個(gè)數(shù).依據(jù)對(duì)分查找思想:設(shè)計(jì)一個(gè)在數(shù)組a中查找某個(gè)單詞位置的程序.實(shí)現(xiàn)該功能的VB程序段如下: key = Text1.Text '輸入查找單詞 For i = 1 To 26 b(i) = b(i) + b(i-1) Next i (1) i = b(k-1)+1 : j = b(k) Do Whi1e i <=j m = (i + j) \ 2 If key = a(m) Then Exit Do 'Exit Do表示退出循環(huán) If key < a(m) Then j = m – 1 E1se i = m +1 Loop If?? (2)?? Then s = "沒(méi)有找到!" E1se s = "位置:"+Str(m) Text2.Text = s 上述程序段2個(gè)方框處的代碼分別為(??? ) A. (1)k=Asc(Mid(key,1,1))-Asc(“a”)+1 (2)i>j B. (1)k=Asc(Mid(key,1,1))-Asc(“a”) (2)i<=j C. (1)k=Asc(Mid(key,1,1))-Asc(“a”)+1 (2)i<=j D. (1)k=Asc(Mid(key,1,1))-Asc(“a”) (2)i>j 數(shù)學(xué)表達(dá)式,在VB程序設(shè)計(jì)中應(yīng)該表示為??? ( ??) A. -b+sqr(b*b-4*a*c)/(2*a) B. (-b+sqr(b*b-4*a*c))/2*a C. -b+sqr(b*b-4*a*c)/2/a D. (-b+sqr(b*b-4*a*c))/2/a VB程序中表達(dá)式 33 mod 17 * 2的值為() A. 1 B. 32 C. 33 D. 34 下列軟件中,屬于系統(tǒng)軟件的是________。 ①linix? ②VB6.0? ③Flash? ④WPS? ⑤Python A. ①②④ B. ①②③ C. ①②⑤ D. ②③④ 己知數(shù)組a(1)到a(6)的原始數(shù)據(jù)為“118”,“36”,“98”,“15”,“88”,“2”,對(duì)該數(shù)組進(jìn)行排序操作,某同學(xué)編寫(xiě)了以下VB程序: For i=1 to 2 ?? For j=6 to i+1 step -1 ????? If a(j)< a(j-1) then ??????? t=a (j) : a(j)=a(j-1) : a (j-1)=t ????? End if ?? Next j Next i 則程序運(yùn)行之后,數(shù)組a (1)到a (6)的值依次為(???? ) A. “118”,“ 15”,“ 2”,“ 36”,“ 98”,“ 88” B. “118”,“ 15”,“ 36”,“ 88”,“ 98”,“ 2” C. “2”,“ 15”,“ 36”,“ 118”,“ 88”,“ 98” D. “2”,“ 15”,“ 36”,“ 88”,“ 98”,“ 118” 二、非選擇題(本大題共13小題,共13.0分) 輸入一個(gè)正整數(shù)N,尋找一個(gè)比N大且最接近N的整數(shù),要求這個(gè)數(shù)的每位數(shù)字之和與N的每位數(shù)字之和相同。例如N=1231,則滿足上述條件的最接近N的整數(shù)為1240。為了解決此問(wèn)題,設(shè)計(jì)算法如下: ①?gòu)挠彝髵呙瑁业谝粋€(gè)非0數(shù)字,將該數(shù)字減1后移到最后面。 ②繼續(xù)掃描,找第一個(gè)非9的數(shù)字,若遇到,將該數(shù)字加1,結(jié)束:若遇到9,將其移到最后面,重復(fù)執(zhí)行②。 ③若掃描完沒(méi)有加1,則最前面補(bǔ)"1"。 例如:N=199000,按照上述算法的處理過(guò)程是:199000→190008→100089→200089,滿足條件的最接近的數(shù)是200089。 (1)若輸入N=99900,則滿足條件的最接近的數(shù)為_(kāi)_______。 (2)實(shí)現(xiàn)上述功能的VB代碼如下,請(qǐng)?jiān)趧澗€處填入適當(dāng)?shù)拇a: ?? Private Sub Command1_Click() ? ??Dim a(1 To 50) As String ? ??Dim n As String,step1 As Boolean,step2 As Boolean ? ??Dim i As Integer,length As Integer,zero As Integer,cnt As Integer ?? ?n=Text1.Text ? ??length = Len(n) ??? ’將數(shù)字串n從右往左依次存儲(chǔ)在數(shù)組a中。 ? ??For i = 1 To length ???? ?a(i)= ____①____ ??? Next i ??? step1 = True:step2 = False ’step1對(duì)應(yīng)步驟①,step2對(duì)應(yīng)步驟② ??? zero = 0:cnt = 1 ??? For i = 1 To length ??? ??If step1 = True Then ?? ????If a(i)= "0" Then ???? ????zero = zero + 1 ??? Else ????? ____②____ ????? If zero > 0 Then ?? ?????a(cnt)= a(i) ?? ?????a(i)= "0" ?? ???End If ??? ??step1 = False ?? ?????????step2 = True ?????? ?End If ????? ElseIf step2 = True Then ?????? ?If a(i)= "9" Then ??? ??????If zero = 0 Then ???? ???????t=a(cnt + 1)︰a(cnt + 1)= a(cnt)︰a(cnt)= t ???? ???????cnt=cnt+1 ?????????? ?If i <> cnt Then ???? ????????a(i)=a(i-1) ??? ??????End If ??????? Else ??????????? ____③____ ?????????? ?a(cnt)= "9" ?????????? ?a(i)= "0" ?????????? ?cnt = cnt + 1 ???????? End If ?????? Else ? ???????a(i)= a(i)+ 1 ??????? ?step2 = False ??????? ?Exit For ????? End If ?? End If Next i ’最前面補(bǔ)"1" If step2 Then ?? length = length + 1 ?? a(length)= "1" End If ’輸出結(jié)果,代碼略。 End Sub center0 尋找受潮藥瓶。現(xiàn)有5瓶藥,每瓶有20粒藥丸,每粒藥丸重10克,其中有幾瓶受潮了,受潮的每粒藥丸重11克,如何用天平只稱(chēng)一次找出受潮的那幾瓶藥? 解決此問(wèn)題的方法是:將5瓶藥編號(hào)為1~5號(hào),從中分別取出1、2、4、8、16粒藥丸進(jìn)行稱(chēng)重。在不受潮時(shí)應(yīng)是(1+2+4+8+16)×10=310(克)。假如稱(chēng)出的重量是315克,那么超出的重量是5克,說(shuō)明有5粒超重,(5)10=(00101)2,因此受潮的是第1瓶和第3瓶。編寫(xiě)程序模擬此過(guò)程,程序運(yùn)行時(shí),單擊“模擬”按鈕Command1,在文本框Text 1中輸出超重克數(shù),在列表框List 1中輸出藥瓶編號(hào),運(yùn)行界面如圖所示。 (1)代碼中List1.AddItem中的AddItem是________。(單選,填字母:A.屬性名/B.方法名/C.事件名) (2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)趧澗€處填入合適代碼。 Private Sub Command1 Click () ??Dim s As Integer,cz As Integer ’cz存儲(chǔ)超重克數(shù) ? Dim k As Integer ??’依次從1~5號(hào)瓶中取出1、2、4、8、16粒藥,并計(jì)算總重量,存儲(chǔ)在變量s中,代碼略 ??cz = s - 310 ??Text1.Text=____①____ ??k = 0 ??Do While cz <> 0 ?? ??k = k + 1 ? ???If ____②____ Then ??? ???List1.AddItem"第"+Str(k)+ "瓶" ?? ??End If ? ???cz = cz \ 2 ??Loop End Sub (3)假如超重為10克,則受潮的藥瓶編號(hào)是________(填數(shù)字:若有多瓶,用“,”號(hào)隔開(kāi)) 對(duì)學(xué)生數(shù)據(jù)排序,排序后男生在前,女生在后,(“M”表示男,“F”表示女),男生和女生分別按“姓名”升序排序.編寫(xiě)一個(gè)VB程序,功能如下:在列表框list1中顯示排序前學(xué)生數(shù)據(jù),單擊“排序”按鈕Command1,在列表框list2中顯示排序后的結(jié)果.程序運(yùn)行界面如圖所示.實(shí)現(xiàn)上述功能的VB程序如下,但加框處代碼有錯(cuò),請(qǐng)改正. Const n=10 Dim xm(1 To n)As String, xb(1 To n)As String Function adj(s As String, n As Integer)As String '函數(shù)功能:在字符串s后添加若干個(gè)空格,使其長(zhǎng)度變?yōu)閚,代碼略. End Function Private Sub Form_Load() '讀取10個(gè)學(xué)生姓名和性別分別存數(shù)組xm、xb, 并在列表框list1中顯示,代碼略. End Sub Private Sub Command1_Click() Dim i As Integer, j As Integer i=1 Do Whilei<=n-1 temp=xm(j): xm(j)=xm(j-1):xm(j - 1)=temp temp=xb(j): xb(j)=xb(j-1): xb(j-1)=temp End If j=j - 1 Loop i=i+1 Loop For i=1 To n List2.AddItem adj(xm(i), 12)+"???? "+xb(i) Next i End Sub 編寫(xiě)VB程序,實(shí)現(xiàn)如下功能:在文本框Text1中輸入十六進(jìn)制數(shù),單擊“轉(zhuǎn)換”按鈕Command1,在列表框List1中輸出對(duì)應(yīng)的十進(jìn)制數(shù),運(yùn)行界面如圖所示,程序代碼如下。 (1)要調(diào)整Label1中的字體大小,可選擇在屬性面板中設(shè)置Label1的________。(單選,填字母:A.Caption / B.Font / C.Height) (2)為實(shí)現(xiàn)上述功能,請(qǐng)?jiān)趧澗€處填入合適的代碼。 Private Sub Command1_Click() Dim s As String, c As String, t As String Dim i As Integer, b As Integer, ans As Long Dim flag As Boolean s = ?① ? b = Len(s) flag = True ans = 0 For i = 1 To b c = Mid(s, i, 1) If c >= "0" And c <= "9" Then ans = ans * 16 + Asc(c) - Asc("0") ElseIf c >= "A" And c <= "F" Then ans = ans * 16 + ?② ? Else ? ③? ??'輸入情況有誤 Exit For End If Next i If flag=true Then t = Str(ans) Else t ="輸入有誤!" List1.AddItem s + "-->" + t End Sub (3)由上述算法可知,運(yùn)行時(shí)在Text1框中輸入“d8”,列表框List1中添加的條目為_(kāi)__。(單選,填字母:A. d8-->216? ,? B. d8-->輸入有誤!) 編寫(xiě)一個(gè)“計(jì)算平均身高”的VB程序,功能如下:在文本框Text1中輸入若干男女學(xué)生的身高和性別(以“,”為分割符和結(jié)束符),如“1.65,F(xiàn),1.75,M,1.84,M,1.69,F(xiàn),1.72,M,1.58,F(xiàn),”,F(xiàn)表示女生,M表示男生,單擊“計(jì)算”按鈕Command1后,在Label2上顯示男生的平均身高,在Label3上顯示女生的平均身高.程序設(shè)計(jì)界面和運(yùn)行界面分別如圖a和圖b所示. (1)要使程序運(yùn)行時(shí),清空Label2上的內(nèi)容,可在Form_Load事件處理過(guò)程中添加語(yǔ)句________(單選,填字母:A.Label2.text=""/B.Label2.Caption=""/C.Label2.Clear). (2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)趧澗€處填入合適代碼. Private Sub Command 1_Click() Dim i As Integer, s As String, ch As String, temp As String Dim k As Integer, n As Integer, c1 As Integer, c2 As Integer Dim h As Single, sum1 As Single, sum2 As Single s = Text1.Text i = l : k = 0: n = 0 sum1 = 0: sum2 = 0: c1 = 0: c2 = 0 Do While__①??? ch = Mid(s, i, 1) If ch <> ","Then k = k + 1 Else n = n + 1 temp = Mid(s, i - k, k) If n Mod 2 = 1 Then ___②???? Else If temp = "M" Then sum1 = sum1 + h: c1 = c1 + 1 Elsesum2 = sum2 + h: c2 = c2 + 1 End If k = 0 End If i = i+ 1 Loop If c1 <> 0 Then Label2.Caption = Str(Int((sum1 / c1) * 100 + 0.5) / 100) + "m" If c2 <> 0 Then Label3.Caption = Str(Int((sum2 / c2) * 100 + 0.5) / 100) + "m" End Sub (3)若文本框Text1中輸入內(nèi)容的結(jié)束符缺失(即輸入內(nèi)容為1.65,F(xiàn),1.75,M,1.84,M,1.69,F(xiàn),1.72,M,1.58,F(xiàn)),則程序運(yùn)行結(jié)束時(shí),變量temp的值為_(kāi)_______. 編寫(xiě)“加法練習(xí)題生成器”程序,實(shí)現(xiàn)如下功能:在文本框Text1中輸入題數(shù)n,單擊“生成”按鈕Command1,在列表框List1中顯示n個(gè)兩數(shù)之和小于100的加法練習(xí)題。程序運(yùn)行界面如圖a所示。 (1)在設(shè)計(jì)程序界面時(shí),應(yīng)使用圖b所示“控制工具箱”中的______(填編號(hào))添加“生成”按鈕。 (2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)趧澗€處填寫(xiě)合適的代碼。 Private Sub Command1_Click() Dim n As Integer, i As Integer, a As Integer, b As Integer Randomize n = Val(Text1.Text) i = ____① Do While i <= n a = Int(Rnd * 100) b = Int(Rnd * 100) If ____② Then List1.AddItem "(" + Str(i) + " )" + Str(a) + "+" + Str(b) + "=" i = i + 1 End If Loop End Sub (3)運(yùn)行該程序,在文本框中輸入5,單擊“生成”按鈕后,對(duì)語(yǔ)句“a=Int(Rnd*100)”執(zhí)行次數(shù)的描述,最合理的是______(單選,填字母:A.執(zhí)行次數(shù)等于5 / B.執(zhí)行次數(shù)大于等于5 / C.執(zhí)行次數(shù)小于等于5)。 篩選法求素?cái)?shù)的核心思想是先找最小素?cái)?shù),然后剔除其所有的倍數(shù),在留下的數(shù)中再剔除最小素?cái)?shù)的倍數(shù),重復(fù)執(zhí)行,直到剔除所有的非素?cái)?shù)。 小張編寫(xiě)了一個(gè)2查找孿生素?cái)?shù)對(duì)(差值為2)的VB程序,功能如下:在文本框Text1中輸入一個(gè)整數(shù)n(n≤1000000),單擊“求素?cái)?shù)對(duì)”按鈕Command1,在列表框List1中顯示2到n范圍內(nèi)的素?cái)?shù),在標(biāo)簽Label2中顯示素?cái)?shù)個(gè)數(shù),在標(biāo)簽Label3中顯示孿 生素?cái)?shù)對(duì)個(gè)數(shù)。程序運(yùn)行界面如圖所示。 實(shí)現(xiàn)上述功能的VB程序如下,但加框處代碼有錯(cuò),請(qǐng)改正。 Private Sub Command 1_ Click() Dim n As Long,i As Long,j As Long Dim t As Long????????? ?存儲(chǔ)素?cái)?shù)個(gè)數(shù) Dim count As Integer???? ?存儲(chǔ)素?cái)?shù)對(duì)個(gè)數(shù) Dim p As Long Dim a (2 To 10000000)As Integer n=Val(Text 1.Text) For i=2 Ton ??? a(i)=1 Next i p=2 Do While p<=Int(Sqr(n)) ??? If a(p)=1 Then ??? j=2 Do While j<=n\p ???? ??? j=j(luò)+1 ? Loop ?End If ? p=p+1 Loop t=0 Fori=2 Ton ??? If a(i)=1 Thent=t+1 Next i count=0 Fori=2 Ton-2 ??? ?? count=count+1 ?? List1. AddItem ads(i,1)&ads(i+2,5) ??? End If Next i Label2.Caption="總共有"+Str(t)+"個(gè)素?cái)?shù)" Label3.Caption="其中有"+Str(count)+"個(gè)孿生素?cái)?shù)對(duì)" End Sub Function ads(x As Integer,n As Integer)As String ?整數(shù)轉(zhuǎn)換成長(zhǎng)度固定的字符串,代碼略 End Function 編寫(xiě)一個(gè)技術(shù)成績(jī)查詢(xún)的VB程序。程序功能如下:在文本框Text1中輸入分?jǐn)?shù)key(0-50的整數(shù)),單擊“查詢(xún)”按鈕Command1,查詢(xún)出信息成績(jī)大于等于key的所有記錄,并以“信息”為主要關(guān)鍵字、“通用”為次要關(guān)鍵字均進(jìn)行降序排序,結(jié)果輸出在列表框List2中。運(yùn)行界面如下圖所示。 實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)回答下列問(wèn)題: (1)觀察上圖,排序后第5位的學(xué)生姓名是________。 (2)請(qǐng)?jiān)趧澗€處填入合適的代碼。 Dim xm(1To600) As String ′存儲(chǔ)學(xué)生姓名 Dim xx(1To600) As Integer ′存儲(chǔ)信息成績(jī) Dim ty(1To600) As Integer ′存儲(chǔ)通用成績(jī) Dim n As Integer ′存儲(chǔ)記錄總數(shù) Private Sub Form_Load() ′本過(guò)程從數(shù)據(jù)庫(kù)中讀取學(xué)生數(shù)據(jù),存儲(chǔ)在相應(yīng)的變量中,并在List1中顯示′代碼略 End sub PrivateSubCommand1_Click() Dim key As Integer,mid As Integer Dim i As Integer,L As Integer,R As Integer,k As Integer Dimtmp1AsInteger,tmp2AsInteger ′以“信息”為主要關(guān)鍵字、“通用”為次要關(guān)鍵字排序 Fori=1Ton-1 k=i For j=i+1Ton If xx(k)<xx(j)or_①_Then k=j(luò) End If Next j Ifk<>iThen tmp1=xm(k)∶xm(k)=xm(i)∶xm(i)=tmp1 tmp2=xx(k)∶xx(k)= xx(i)∶xx(i)=tmp2 tmp2=ty(k)∶ty(k)=ty(i)∶ty(i)=tmp2 End If Next i ′查詢(xún)記錄 key=Val(Text1.Text) L = 1:R = n Do WhileL<=R mid=(L+R)\2 If_②_Then L=mid+1 Else R=mid-1 End If Loop List2.Clear ′vbTab相當(dāng)于是鍵盤(pán)上制表符TAB按鍵的功能 List2.Add Item “姓名” & vb Tab &“信息”& vb Tab&“通用” For i=1to_③_ List2.Add Itemxm(i)& vb Tab & xx(i)& vb Tab & ty(i) Next i End sub 小張利用VB給教務(wù)處老師編寫(xiě)了“排監(jiān)考表”的小程序。該程序的執(zhí)行過(guò)程如下: ①?gòu)臄?shù)據(jù)庫(kù)中讀取待排監(jiān)考的老師姓名信息存入數(shù)組teachers,每個(gè)考試科目的學(xué)生數(shù)(新高考7選3,每個(gè)考試科目學(xué)生數(shù)不一樣)存入數(shù)組xkStudSum(其中xkStudSum(1)存放語(yǔ)文學(xué)科的學(xué)生數(shù),按“語(yǔ)文數(shù)學(xué)英語(yǔ)物理化學(xué)生物政治歷史地理技術(shù)”依次類(lèi)推); ②根據(jù)每個(gè)試場(chǎng)的人數(shù)(30人)計(jì)算出各個(gè)考試科目的試場(chǎng)數(shù)存入數(shù)組xkSc(其中xkSc(1)存放語(yǔ)文學(xué)科的試場(chǎng)數(shù),依次類(lèi)推); ③將待排教師分配到每一個(gè)考場(chǎng),并存入數(shù)組scTeacher(每個(gè)老師只能排1場(chǎng),教師數(shù)量100保證大于所有的試場(chǎng)數(shù)); ④按考試科目將監(jiān)考教師姓名顯示在list1中。運(yùn)行界面如下圖所示。 (1)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)完善劃線處的代碼。 Const XKMC = "語(yǔ)文數(shù)學(xué)英語(yǔ)物理化學(xué)生物政治歷史地理技術(shù)" ?考試科目 Dim xkStudSum(1 To 10) As Integer????? ?各個(gè)考試科目學(xué)生數(shù) Dim teachers(1 To 100) As String???????????????? ?存放待排監(jiān)考的教師姓名 Dim scTeacher(1 To 100) As String??????????????? ?存放已排監(jiān)考的教師姓名 Dim xkSc(1 To 10) As Integer???????????????????? ?各個(gè)學(xué)科試場(chǎng)數(shù) Private Sub form_Load() ‘本過(guò)程從數(shù)據(jù)庫(kù)中讀取各考試科目學(xué)生數(shù)并存放在數(shù)組xkStudSum ‘讀取教師姓名并存放在數(shù)組teachers ‘本過(guò)程代碼略 End Sub Private Sub Command1_Click() Dim index As Integer Dim totalSc As Integer ‘存放總試場(chǎng)數(shù)量 Dim book(1 To 100) As Boolean Randomize For i = 1 To 10 ??? xkSc(i) = ____①____ ??? totalSc = totalSc + xkSc(i) Next i For i = 1 To totalSc?? 9 / 15 t = Int(Rnd() * 100) + 1? ‘隨機(jī)生成待排監(jiān)考老師的編號(hào) If Not book(t) Then ??? scTeacher(i) = teachers(t) ??? book(t) = True Else ????? ____②____ ??? End If Next i ?按考試科目顯示監(jiān)考老師 For i = 1 To 10 ? ??s= Mid(XKMC, 2 * i -1, 2) + " : " ??? For j = 1 To xkSc(i) ???? ____③____ ??? s = s + scTeacher(index) + " , " ??? Next j ??? List1.AddItem s Next i End Sub (2)根據(jù)問(wèn)題描述和分析代碼,寫(xiě)出數(shù)組scTeacher中存放“數(shù)學(xué)學(xué)科”第2個(gè)監(jiān)考教師姓名的下標(biāo)的vb表達(dá)式____________。 小李編寫(xiě)一個(gè)統(tǒng)計(jì)學(xué)生選考科目的VB程序,算法的基本思想是:檢查每位學(xué)生選課組合的編碼是否有效,對(duì)有效選擇結(jié)果進(jìn)行科目統(tǒng)計(jì),根據(jù)各科次占有效人數(shù)的百分率求出各科排名。程序運(yùn)行時(shí),單擊“顯示”按鈕Commmad1,學(xué)生選課數(shù)據(jù)顯示在列表框list1中,各科編號(hào)及對(duì)應(yīng)科目名稱(chēng)顯示列表框list2中,單擊“統(tǒng)計(jì)”按鈕 Commmad2,選課結(jié)果按各科百分率由高到低顯示在列表框list3中,程序運(yùn)行結(jié)果如圖所示。 實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)回答下列問(wèn)題: (1)學(xué)生選課的編碼數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)表中,其字段名為_(kāi)______。 ?????? (2)請(qǐng)?jiān)趧澗€處填入合適的代碼. Dim ach(1 To 500) As String '存儲(chǔ)各學(xué)生選課編碼 Dim bno(1 To 10) As Integer '存儲(chǔ)各科目編號(hào) Dim bname(1 To 10) As String '存儲(chǔ)各科目名稱(chēng) Dim bnum(1 To 10) As Integer '存儲(chǔ)各科目被選次數(shù) Dim bmc(1 To 10) As Integer???? '存儲(chǔ)各科目被選的名次 Dim n As Integer, num As Integer Private Sub Command1_Click() ??? Dim i As Integer, km As String ??? km = "物理化學(xué)生物政治歷史地理技術(shù)" ??? Dim cn As New ADODB.Connection, rs As New ADODB.Recordset, sql As String cn.Open "provider=Microsoft.Jet.oledb.4.0;Data Source=" + App.Path + "\students.mdb" ??? rs.Open "select * from choose", cn ??? Do While Not rs.EOF ??????? n = n + 1 : ach(n) = rs.Fields("subject") : rs.MoveNext Loop rs.Close cn.Close Set rs = Nothing Set cn = Nothing For i = 1 To 7 ?? bno(i) = i ?? bname(i) = Mid(km, (i - 1) * 2 + 1, 2) ?? List2.AddItem Str(bno(i)) + "---" + bname(i) Next i End Sub Private Sub Command2_Click() Dim i As Integer, j As Integer, k As Integer Dim c As String, per As Integer For i = 1 To n ?? If check(ach(i)) = True Then ??????? For j = 1 To 3 ?????????? c = Mid(ach(i), j, 1) ?????????? bnum(Val(c)) =__①?? ????????? ’統(tǒng)計(jì)科目被選次數(shù)????? ??????? Next j ??????? num = num + 1 ?? End If Next i???? i = 1????????? Do While i <= 7??????????? '該循環(huán)得到各學(xué)科被選人數(shù)的名次 bmc(i) = 1 ??? For j = 1 To 7 ??? ?? If bnum(j) > bnum(i) Then ? ___②?? ??? ’通過(guò)比較有多少個(gè)數(shù)比當(dāng)前的數(shù)大 ’得到該數(shù)在數(shù)組中的排名 ??? Next j ??? i = i + 1 Loop For i = 1 To 7 ??? For j = 1 To 7 ???????? If ___③?? ?Then??????????????? ????????? ’按名次輸出 ???????? per = Int(bnum(j) * 100 / num * 100) / 100 ???????? List3.AddItem Str(bno(j)) + "---" + bname(j) + "---" + Str(per) + "%" ???????? End If ??? Next j Next i End Sub Function check(s As String) As Boolean ?? '代碼略! 若學(xué)生選科代碼有效,函數(shù)返回True,否則返回False End Function 本程序要求完成的功能是:輸出能被274整除,且個(gè)位為6的最大五位正整數(shù)。程序代碼如下: Private Sub Command1_Click() Dim x as double,j as integer x =99999:j=0 do while x>=10000 and j=0?? if x mod 10=6 and x/274=int(x/274) then '① j=j+1? ??'② print x? '③???????????? end if??? ??'④ ?????? x=x+1? ?????'⑤ loop???? End Sub (1)上述VB代碼中,錯(cuò)誤語(yǔ)句的編號(hào)是__________。 (2)錯(cuò)誤語(yǔ)句應(yīng)更正為_(kāi)_________。 下列VB 程序用于刪除數(shù)據(jù)序列中的重復(fù)數(shù)據(jù)(即相同的數(shù)據(jù)僅保留一個(gè))。程序運(yùn)行時(shí),在列表框List1 中顯示數(shù)組a 中的原始數(shù)據(jù),單擊“去重”按鈕Command1,在列表框 List2 中輸出“去重”后的數(shù)據(jù),同時(shí)在標(biāo)簽Label3 中顯示刪除的數(shù)據(jù)總個(gè)數(shù),程序運(yùn)行界面如圖所示。實(shí)現(xiàn)上述功能的VB 代碼如下,請(qǐng)完善劃線部分代碼。 Dim a(1 To 10) As Integer?? ?a為數(shù)組變量,表示a(1)~a(10)是10個(gè)不同變量 Private Sub Command1_Click() Dim i As Integer, c As Integer Dim flag(1 To 10) As Boolean ? (1)? ? For i = 1 To 10 ??? ??flag(i) = False Next i For i = 1 To 10 ? ? ? If flag(i) = False Then ?????? ???For j = i + 1 To 10 ????????? ????If ???(2)? ??Then flag(j) = True: c = c + 1 ?????? ???Next j ??? ??End If Next i For i = 1 To 10 ?? ???If flag(i) = False Then ?????(3)???? Next i Label3.Caption = "共刪除重復(fù)數(shù)據(jù):" & Str(c) & "個(gè)" End Sub Private Sub Form_Load() ??? '產(chǎn)生10 個(gè)數(shù)據(jù)存儲(chǔ)在數(shù)組a 中,并在列表框 List1 中顯示,代碼略 End Sub 編寫(xiě)“序列生成”程序,實(shí)現(xiàn)如下功能:在文本框Text1中輸入一正奇數(shù)n,單擊“生成序列”按鈕Command1,在文本框Text2中顯示該序列,且每個(gè)元素用逗號(hào)“,”分隔。若輸入一非正奇數(shù),那么提示“輸入非正奇數(shù),請(qǐng)重新輸入”;若輸入9,那么生成的序列為“1, 2 , 3 , 4 , 5 , 4 , 3, 2 ,1”。程序運(yùn)行界面如圖所示。 (1)設(shè)計(jì)界面時(shí),為清空文本框Text2的內(nèi)容,可設(shè)置__________屬性實(shí)現(xiàn)。 (2)實(shí)現(xiàn)“序列生成”功能的VB程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。 Private Sub Command1_Click() Dim n As Integer, i As Integer, mid As Integer n = _______①??????????? If _____②????? ?Then ????? Text2.Text = "輸入非正奇數(shù),請(qǐng)重新輸入" Else ? mid = ?(n + 1) \ 2? Text2.Text = "" ? ????For i = 1 To n ?? ?????If i = n Then ??? ??????Text2.Text = Text2.Text ?+ ?"1" ?? ?????Else ???? ?????Text2.Text = Text2.Text ?+? ______③??? ??+ ?"," ?? ?????End If ? ????Next i ____④???? End Sub 答案和解析 1.【答案】C 【分析】本題主要考察VB程序的基本表達(dá),與順序查找算法,屬于較難題。 【解析】解:結(jié)合上下行代碼 (1)處應(yīng)填k=Asc(Mid(key,1,1))-Asc(“a”)+1 (2)處應(yīng)填i<=j ?故選C。 2.【答案】D 本題主要考查VB語(yǔ)言的基本運(yùn)算式與基本語(yǔ)句,屬于基礎(chǔ)題。 【解答】 數(shù)學(xué)表達(dá)式,在VB程序設(shè)計(jì)中應(yīng)該表示為(-b+sqr(b*b-4*a*c))/2/a ,故D正確。 故選D。 3.【答案】C 本題主要考查VB語(yǔ)言中的基本運(yùn)算,難度較易。 【解答】 33 mod 17*2=33 mod 34 =33, 故選C。 4.【答案】C 本題主要考查對(duì)系統(tǒng)軟件的了解,難度較易。 【解答】 根據(jù)題意,分析得出:①②⑤屬于系統(tǒng)軟件,③Flash? ④WPS屬于應(yīng)用軟件,故C正確。 ?故選C。 5.【答案】A 本題主要考查了對(duì)vb排序的綜合應(yīng)用,在學(xué)習(xí)中應(yīng)結(jié)合具體案例進(jìn)行理解。 【解答】 分析程序可知當(dāng)i=1,j從6到2循環(huán),得到a(6)-a(2)的最大值放在a(6),第二次得到a(6)-a(3)的最大值a(5),最后得到的值一依次是”118”,”15”,”2”,”36”,”98”,”88”,故選A。 6.【答案】(1)100899; (2)①M(fèi)id(n, length - i + 1, 1) 或 Mid(n, Len(n) - i + 1, 1),或其他等價(jià)答案; ? ? ②a(i) = a(i) - 1;③ a(cnt + 1) = a(cnt) 【解析】 【分析】 本題考查VB代碼的閱讀與填空,是對(duì)該軟件的一個(gè)綜合運(yùn)用,難度較大。 【解答】 (1)根據(jù)題意,分析可知,比N=199000大且最接近N的整數(shù),并且要求這個(gè)數(shù)的每位數(shù)字之和與N的每位數(shù)字之和相同,故為100899; (2)①此處a(i)為:從n中取數(shù),故可以借助Mid函數(shù),故填Mid(n, length - i + 1, 1); ②此處,根據(jù)題意,從右往左掃描,找第一個(gè)非0數(shù)字,將該數(shù)字減1后移到最后面,故填a(i) = a(i) - 1; ③閱讀整段程序,分析得出,此處應(yīng)填入a(cnt + 1) = a(cnt)。 故答案為:(1)100899;(2)①M(fèi)id(n, length - i + 1, 1) 或 Mid(n, Len(n) - i + 1, 1),或其他等價(jià)答案; ? ? ②a(i) = a(i) - 1;③ a(cnt + 1) = a(cnt)。 7.【答案】(1)B; (2)① Str(cz);?②cz Mod 2 = 1 或 cz Mod 2 <> 0 或其他等價(jià)答案; (3)2,4 【解析】 【分析】 本題考查VB代碼的閱讀與填空,是對(duì)該軟件的一個(gè)綜合運(yùn)用,難度較大。 【解答】 (1)AddItem 方法用于將項(xiàng)目添加到 ListBox 或 ComboBox 控件,故選B; (2)①文本框Text1中的數(shù)據(jù)為“cz存儲(chǔ)超重克數(shù)”,故填Str(cz);②閱讀程序,分析得出,此處應(yīng)填入cz Mod 2 = 1 或 cz Mod 2 <> 0; (3)根據(jù)題意,分析得出,假如超重為10克,則受潮的藥瓶編號(hào)是2和4。 故答案為:?(1)B;(2)① Str(cz);?②cz Mod 2 = 1 或 cz Mod 2 <> 0 或其他等價(jià)答案;(3)2,4 。 8.【答案】(1)j=n; (2)xb(j)=xb(j-1) And xm(j-1) 【解析】 本題考查的是VB編程的應(yīng)用。 【解答】 ?(1)從前面的條件可以看出,當(dāng)i<=n-1,則j=n,將j=n-1修改為j=n; (2)此處應(yīng)修改為:xb(j)=xb(j-1) And xm(j-1)。 故答案為:(1)j=n;(2)xb(j)=xb(j-1) And xm(j-1)。 9.【答案】(1)B; (2)① Text1.text;② 10+Asc(c) - Asc("A")? 或 10+Asc(c) - 65;③ flag=False;(3)B 【解析】 本題考查VB代碼的閱讀、填空、改錯(cuò),是對(duì)該軟件的一個(gè)綜合運(yùn)用,難度較大。 【解答】 (1)要調(diào)整Label1中的字體大小,可選擇在屬性面板中設(shè)置Label1的字體屬性,即Font; (2)仔細(xì)閱讀程序,該程序?qū)崿F(xiàn)的功能為:在文本框Text1中輸入十六進(jìn)制數(shù),單擊“轉(zhuǎn)換”按鈕Command1,在列表框List1中輸出對(duì)應(yīng)的十進(jìn)制數(shù); 分析得出,空格處應(yīng)依次填入:①處獲取文本框中的十六進(jìn)制數(shù),應(yīng)填:Text1.text; ②處實(shí)現(xiàn)十六進(jìn)制數(shù)與十進(jìn)制數(shù)的轉(zhuǎn)換,故填:10+Asc(c) - Asc("A")? 或 10+Asc(c) - 65; ③邏輯判斷,故填: flag=False; (3)由上述算法可知,運(yùn)行時(shí)在Text1框中輸入“d8”,列表框List1中添加的條目為d8-->輸入有誤! 故答案為:(1)B;(2)① Text1.text;② 10+Asc(c) - Asc("A")? 或 10+Asc(c) - 65;③ flag=False;(3)B 。 10.【答案】(1)B;(2)①i<=Len(s);②h=Val(temp);(3)“1.58” 本題考查的是VB程序的應(yīng)用,稍有難度。 【解答】 ?(1)要使程序運(yùn)行時(shí),清空Label2上的內(nèi)容,可在Form_Load事件處理過(guò)程中添加語(yǔ)句Label2.Caption="",故選B; (2)①分析前后語(yǔ)句,此處應(yīng)填:i<=Len(s); ②此處應(yīng)填:h=Val(temp); (3)若文本框Text1中輸入內(nèi)容的結(jié)束符缺失(即輸入內(nèi)容為1.65,F(xiàn),1.75,M,1.84,M,1.69,F(xiàn),1.72,M,1.58,F(xiàn)),則程序運(yùn)行結(jié)束時(shí),變量temp的值為“1.58”。 故答案為:?(1)B;(2)①i<=Len(s);②h=Val(temp);(3)“1.58”。 11.【答案】(1)3 ; (2)①1 ;②a+b<100 ; (3)B。 本題考查VB代碼的閱讀與填空,是對(duì)該軟件的一個(gè)綜合運(yùn)用,難度較大。 【解答】 (1)工具箱中1是標(biāo)簽,2是文本框,4是列表框; (2)i是循環(huán)變量,表示出題數(shù)量,其值范圍是1~n,所以i初值是1。每次循環(huán)首先產(chǎn)生兩個(gè)隨機(jī)數(shù)a和b,如果a+b<100,則顯示加法算式; (3)如果a+b≥100,則重新產(chǎn)生a和b的值,所以語(yǔ)句a=Int(Rnd*100)執(zhí)行次數(shù)一定是大于等于5。 故答案為:(1)3;(2)①1;②a+b<100;(3)B。 12.【答案】(1)a(p*j)=0; (2)a(i+2)+a(i)=2 或a(i+2)=1 and a(i)=1? 或a(i+2) *a(i)=1或a(i+2)<>0 and a(i)<>0 或a(i+2)*a(i)<>0 本題考查VB代碼的閱讀與改錯(cuò),是對(duì)該軟件的一個(gè)綜合運(yùn)用,難度較大。 【解答】 分析程序,根據(jù)該程序段實(shí)現(xiàn)的功能:篩選法求素?cái)?shù),先找最小素?cái)?shù),然后剔除其所有的倍數(shù),在留下的數(shù)中再剔除最小素?cái)?shù)的倍數(shù),重復(fù)執(zhí)行,直到剔除所有的非素?cái)?shù);Do While后的循環(huán)條件為: j<=n\p,當(dāng)滿足a(p*j)=0時(shí),執(zhí)行?j=j(luò)+1,故(1)處改為a(p*j)=0;IF語(yǔ)句后面的條件應(yīng)為:a(i+2)+a(i)=2,故將(2)處改為a(i+2)+a(i)=2。 故答案為:?(1)a(p*j)=0;(2)a(i+2)+a(i)=2 或a(i+2)=1 and a(i)=1? 或a(i+2) *a(i)=1或a(i+2)<>0 and a(i)<>0 或a(i+2)*a(i)<>0。 13.【答案】(1)李白?? (2)①xx(k)=xx(j) And ty(k)ty(j)或xx(k=xx(j) And ty(k)<=ty(j)??? ②xx(mid)>=key ???????③R或者1-1 【分析】本題綜合考查數(shù)據(jù)庫(kù)、對(duì)分查找及自定義函數(shù)的使用方法。 【解答】(1)由于數(shù)據(jù)是以“信息”為主要關(guān)鍵字、“通用”為次要關(guān)鍵字均進(jìn)行降序排序,觀察截圖可知第五名是“李白”同學(xué)。 (2)①此處的意思是“通用”為次要關(guān)鍵字,也就是信息技術(shù)分?jǐn)?shù)相同時(shí),通用分?jǐn)?shù)低的往后交換,即實(shí)現(xiàn)降序功能;②本題考查對(duì)分查找算法的程序?qū)崿F(xiàn),前面數(shù)據(jù)經(jīng)過(guò)排序已經(jīng)實(shí)現(xiàn)降序排列,需要查找到信息成績(jī)大于等于key的所有人數(shù),用對(duì)分查找法找到該數(shù)據(jù)的準(zhǔn)確位置,故此處答案是xx(mid)>=key;③由代碼可知,只有當(dāng)1>R時(shí)才會(huì)退出循環(huán),退出時(shí)的R值就是找到的位置(此時(shí)1還要加1才能退出循壞,故1-1=R),由于數(shù)據(jù)已經(jīng)實(shí)現(xiàn)按照成績(jī)高低降序排列,第一個(gè)值(最大值)的下標(biāo)為1,找到的位置是R,故總共符合條件的記錄數(shù)是從1到R。 故依次填寫(xiě):(1)李白?? ???????(2)①xx(k)=xx(j) And ty(k)ty(j)或xx(k=xx(j) And ty(k)<=ty(j)??? ②xx(mid)>=key ???????③R或者1-1。 14.【答案】(1)①(xkStudSum(i) + 29) / 30 或 Abs(Int((-1) * xkStudSum(i) / 30))?②i=i-1③index=index+1; (2)xkSc(1)+2 本題考查VB代碼的閱讀與填空,是對(duì)該軟件的一個(gè)綜合運(yùn)用,難度較大。 【解答】 (1)根據(jù)題意,分析可知,根據(jù)每個(gè)試場(chǎng)的人數(shù)(30人)計(jì)算出各個(gè)考試科目的試場(chǎng)數(shù)存入數(shù)組xkSc,每個(gè)考試科目的學(xué)生數(shù)(新高考7選3,每個(gè)考試科目學(xué)生數(shù)不一樣)存入數(shù)組xkStudSum,故分析得出,①處代碼為:(xkStudSum(i) + 29) / 30;?②i=i-1;③index=index+1; (2)根據(jù)問(wèn)題描述和分析代碼,寫(xiě)出數(shù)組scTeacher中存放“數(shù)學(xué)學(xué)科”第2個(gè)監(jiān)考教師姓名的下標(biāo)的vb表達(dá)式:xkSc(1)+2。 故答案為:?(1)①(xkStudSum(i) + 29) / 30 或 Abs(Int((-1) * xkStudSum(i) / 30))?②i=i-1③index=index+1;(2)xkSc(1)+2。 15.【答案】(1)subject; (2)①bnum(val(c))+1??; ? ?②bmc(i)= bmc(i)+ 1; ? ?③bmc(j)=i? 【解析】 本題主要考查VB程序設(shè)計(jì)的相關(guān)知識(shí)。在VB語(yǔ)言中,val一個(gè)把數(shù)值字符串轉(zhuǎn)為數(shù)值的函數(shù),在它不能識(shí)別為數(shù)字的第一個(gè)字符上,停止讀入字符串。那些被認(rèn)為是數(shù)值的一部分的符號(hào)和字符,都不能被識(shí)別。 【解答】 (1)學(xué)生選課的編碼數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)表中,其字段名為subject; (2)閱讀程序,分析得出,空格處應(yīng)依次填入: ?①bnum(Val(c)) + 1; ②bmc(i) = bmc(i) + 1; ③bmc(j)=i?。 故答案為:(1)subject;(2)①bnum(Val(c)) + 1;②bmc(i) = bmc(i) + 1;③bmc(j)=i?。 16.【答案】(1)⑤; (2)x=x-1. 本題考查VB程序語(yǔ)句的分析理解,重點(diǎn)在于分析程序中相關(guān)變量的具體作用,注意上下語(yǔ)句的關(guān)聯(lián)。VB中循環(huán)語(yǔ)句包括For-Next、While-Wend、Do-Loop語(yǔ)句比較常用的是For-Next和Do-Loop語(yǔ)句;For循環(huán)只能用在循環(huán)次數(shù)已知的情況下。 【解答】 本程序要求完成的功能是:輸出能被274整除,且個(gè)位為6的最大五位正整數(shù)。分析VB程序語(yǔ)句,可知x的范圍在10000和99999之間,x被賦值為99999,故而在循環(huán)體中x遞減1,故⑤錯(cuò)誤,應(yīng)為x=x-1。 故答案為:(1)⑤; (2)x=x-1. 17.【答案】(1)c = 0; (2)a(i) = a(j) 或a(j)=a(i); (3)List2.AddItem Str(a(i))或List2.AddItem a(i) 本題考查VB代碼的閱讀與填空,是對(duì)該軟件的一個(gè)綜合運(yùn)用,難度較大。 【解答】 閱讀程序,分析得出,實(shí)現(xiàn)上述功能的VB 代碼如下,劃線部分代碼為:?c = 0、a(i) = a(j) 或a(j)=a(i)、List2.AddItem Str(a(i))或List2.AddItem a(i)。 故答案為:?(1)c = 0;(2)a(i) = a(j) 或a(j)=a(i);(3)List2.AddItem Str(a(i))或List2.AddItem a(i)。 18.【答案】(1)Text ;? (2)①Val(Text1.text) ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ②n mod 2 <=0 ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ③str(mid-abs(mid-i)) ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ④End If 本題主要考查VB語(yǔ)言的基本運(yùn)算與表達(dá)式以及基本語(yǔ)句,屬于一般題. 【解析】 (1)設(shè)計(jì)界面時(shí),為清空文本框Text2的內(nèi)容,可設(shè)置"Text"屬性來(lái)實(shí)現(xiàn); (2)①"Val(Text1.text) "對(duì)n賦初始值; ②"n mod 2 <=0"對(duì)n的值進(jìn)行判斷;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ③“str(mid-abs(mid-i))”對(duì)Text賦值;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ④End If 結(jié)束判斷。 故答案為:(1)Text ;(2)①Val(Text1.text) ;②n mod 2 <=0 ;?③str(mid-abs(mid-i)) ;④End If 。 展開(kāi)更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來(lái)源于二一教育資源庫(kù)