資源簡介 ※ 練習1、(2021寧波模擬15)一個含有n個元素的整數數組,如果數組兩個連續元素之間差的絕對值包括了[1,n-1]之間的所有整數,則稱之為一組“完美跳數”。小余制作了驗證完美跳數的VB程序,功能如下:在文本框Text1中輸入一組以逗號分隔且以逗號結尾的整數數組,單擊“驗證”按鈕Command1,在標簽Labe11中顯示驗證結果,運行界面如圖所示。(1)觀察程序界面,具有Caption屬性的對象有 個。(填個數)Private Sub Command1 Click()Dim n As Integer,i As Integer,j As Integer,s As String,chr As String,temp As StringDim a(1 To 100)As Integer,b(1 To 100)As Integers=Text1.Texti=1:n=0Do While i〈=Len(s)ch=Mid(s,i,1)If ch〉="0"And ch〈="9"Thentemp=temp+chElsen=n+1①temp=""End Ifi=i+1LoopFor i=2 To n②Next iFor i=1 To n-2For j= n To i+1 Step-1If b(j)〈b(j-1)Then t=b(j):b(j)=b(j-1):b(j-1)=tNext jNext iFor i=1 To n-1If b(i)< > i Then Exit ForNext iIf i=n Then Labell.Caption="完美跳數"Else Labe11.Caption="非完美跳數"End Sub(2)請在上述程序的劃線處填上合適的代碼。(3)上述程序加框處代碼有誤,請改正。2、(2021嘉興模擬15)倉庫中有一批不同款式的衣服,相同款式的衣服具有相同的代號,現要統計每個款式的數量,并按數量從多到少的排序。小明編寫了一個VB程序完成該統計。程序運行時,在文本框Text1輸入每件衣服的代號n(1≤n≤100),代號之間用逗號相隔,衣服的總數量不超過100件。單擊按鈕Command1后,在列表框List1中按每個款式的庫存數量從大到小輸出。程序運行界面如第15題圖所示。(1)代碼“Private Sub Command1_Click()”的Click是 (單選,填字母:A.對象名/B.屬性名/C.事件名)。(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。(3)已知程序中加框處代碼有錯誤,請改正。Private Sub Command1_Click()Dims As String,ch As String,p As Integer,t As IntegerDim a(1 To max)As Integer,b(1 To max)As Integer,c(1 To max)As Integer’數組a用于存儲輸入的數據,數組b用于存儲每款衣服的數量,數組c用于存儲衣服的代號;數組a和b的初值均為0。s=Text1. Text:p=1 :max=100For i=1 To maxc(i)=iNext iFor i=1 To Len(s)① ①If ch>="0"And ch〈="9"Thena(p)=a(p)*10+Val(ch)Else②End IfNext iFor i=1To p’統計各款衣服的數量b(i)=b(i)+1Next iFor i=1 To max-1’排序k=iFor j=i+1 To maxIf ③ Then k=jNext jt=b(i):b(i)=b(k):b(k)=tt=c(i):c(i)=c(k):c(k)=tNext iFor i=1 To maxIf b(i)>0 Then Listl.AddItem Str(c(i))+""+Str(b(i))Next iEnd Sub3、(2021杭州模擬15) “2021年我要學好Python!”小明這樣想著。雖然一年里只要不出去旅游的日子都可以學習,但是對算法學習而言,連續不間斷的效果更好,小明希望選一個最長的時間段學習Python。輸入某些特定日期(X月X日)作為計劃好的外出旅游時間,算出2021年最長的學習天數。編寫VB程序,實現上述功能。運行程序,在文本框Textl中輸入計劃出去旅游的時間,用逗號間隔,并以逗號結尾,輸入月份和日期。如“3,1,2,19,”表示3月1日和2月19日要外出旅游不能學習。單擊“統計”按鈕Command1,輸出最長學習天數。程序運行界面如第15題圖所示。請回答下列問題:(1)窗體中至少包含 個對象(不含窗體)。(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正。Dim yf(1To 12)As Integer每月天數Private Sub For m Load)“初始化1-12月天數,依次存儲在數組yf(1)-yf(12)中,代碼略End SubPrivate Sub Command1Click)Dim k As Integer,n As Integer,i As Integer,jAs IntegerDim t As Integer,z As Integer,qt As Integer,maxk As IntegerDim y(1To 365)As Integer, r(1To 365)As Integer'y數組存儲月,r數組存儲日Dim sum(0 To 12)As IntegerConst yearn=365k=0For i=1 To Len(Text1.Text)c=Mid(Text1.Text,i,1)Ifc=","Thenk=k+1Ifk Mod2=1Then y((k+1)\2)=t Else r(k+1)\2)=tt=0.Elset= ①End IfNext in=k\2For i=1To n-1以月為主關鍵字、日為次關鍵字升序排序For j=1To n-iIf ② thent=y(j):y(j)=y(j+1):y(j+1)=tt=r(j):r(j)=r(j+1):rj+1)=tEnd IfNext jNext isum(0)=0For i=1To 12sum(i)=sum(i-1)+yf(i)Next imaxk=0:t=0For i=1To nz=tt=r(i)+ sum(y(i))(3)改錯Ifi>1 Then qt=t-z-1Else qt=t-1If qt>maxk Then maxk=qt ‘記錄長時間段Next iqt= ③If qt>maxk Then maxk=qtLabel3.Caption="最長學習天數為:"+Str(maxk)+“天”End Sub4、(2021臺州模擬16)點陣方式是漢字輸出顯示和打印的一種字形編碼。某字庫描述漢字字形的點陣規模為8x8,每個點用1個二進制位表示,“0”表示白點,“1”表示黑點,且左上角(第1行第1列)的點是白點。漢字“中”的點陣字形和對應編碼如第16題圖a所示。圖a 圖b現對該漢字的編碼進行壓縮:從第1行第1列開始,從左到右、由上至下,對連續的“0”和“1”進行壓縮,得到一組數值,即為對應漢字的壓縮碼。如,“中”的壓縮碼為“3,1,4,7,1,1,2,1,2,1,1,1,2,1,2,1,1,7,1,1,2,1,2,1,4,1,7,1,4”,其含義為:第一個數“3”,表示連續3個0;第二個數“1”,表示連續1個1;第三個數“4”,表示連續4個0;第四個數“”,表示連續7個1;..(以此類推,依次表示0和1的交替個數)。小王編寫了一個漢字壓縮碼的解壓縮程序,功能如下:在文本框Textl中輸入以逗號分隔的壓縮碼,單擊“解壓縮”按鈕Commandl,程序對壓縮碼進行解壓縮處理,將編碼轉換成字形顯示在列表框Listl中,并計算白點、黑點數,顯示在標簽Labell中。程序運行界面如第16題圖b所示。(1)若某漢字壓縮碼為“3,1,7,1,7,4,4,1,7,,1,7,1,7,1,4,8”,則該字形中黑點的個數是 。(2)實現上述功能的VB程序如下,請在劃線處填入合適代碼。Const n=8Dim a(l To n*n)As IntegerPrivate Sub Command1_ClickODim s As String,c As String,1ine As StringDim i As Integer,j As Integer,k As IntegerDim total As Integer,flag As Integer,sum(0 To 1)As Integers=Text1.Text +","j=1:k=0For i=1 To Len(s)c=Mid(s,i,1)If c=","Thenk=k+1a(k)=Val( ① )j=i+1End IfNext isum(0)=0:sum(1)=0total=0:line=""flag=0 ’左上角編碼為0,即白點For i=1 To kFor j=1 To a(i)total=total+11ine=line+ ②If total Mod n=0 ThenList1.AddItem line1ine=""End IfNextj③flag=1-flagNext iLabel1.Caption="白點數:"+Str(sum(0))+"黑點數:"+Str(sum(1))End SubFunction convert(x As Integer)As String‘將編碼0、1轉換成白點和黑點;代碼略End Function5、(2021麗水模擬16)將某字符串按“V”的形狀進行變換,其變換方法描述如下:(1)將字符串中的字母轉換為大寫字母后按升序進行排序;(2)根據給定的行數,將字符串從上往下、從左到右進行“V”字形排列;(3)從左往右逐行讀取字符串并輸出;例如:輸入字符串為:“NoThinglslmpossible”,經過排序得到字符串:“BEGHIIIILMNNOOPSSST”,行數輸入為3時,排列如下:經過變換后得到新字符串為:“BILOSEHIIMNOSSGINPT”。編寫VB程序,實現如下功能:在文本框Textl中輸入行數,在文本框Text2中輸入字符串(限定字母),單擊“變換”按鈕Command1,在標簽Label3中輸出變換結果。程序運行效果如圖所示。(1)若小明在文本框Textl中輸入3,在文本框Text2中輸入的的字符串為“NOTHING”,則在標簽框Label3中輸出的結果為 。(2)實現該功能的VB程序如下,請在劃線處填入合適的代碼。6、(2021金華十校模擬16)刪數問題。輸入一個正整數s,去掉其中任意k個數字后,剩下的數字按原左右次序將組成一個新的整數,設計算法使得剩下數字組成的新數最小。為了實現上述要求,小明按“每次刪除左側第一個升序序列的末位數字”的思想,編寫了一個VB程序,程序的運行界面如下所示,在文本框Text1中輸入正整數s,在文本框Text2中輸入刪除的數字個數k,單擊按鈕Command1后,在標簽Label3上顯示結果,顯示結果要求刪除前導零,若刪完后結果為0,則輸出0。實現上述功能的程序如下:Dim a(1To 1000)As IntegerPrivate Sub Command1_Click()Dims As String,k As Integer,n As IntegerDim i As Integer,j As Integer,x As IntegerDim left As Integer,flag as Booleans=Text1.Textk=Val(Text2.Text)n=Len(s)If k > n ThenLabel3.Caption=”輸入的數據不足"+Str(k)+“位”Exit SubEnd IfFor i=1 To na(i)=Val(Mid(s,i,1))Next iDo While k<>0flag=TrueFor j=1To n-1If ① ThenCall ss(j,n)刪除數組中第j位,后續數據前移一位n=n-1:k=k-1flag=FalseExit For 退出for循環End IfNext jIf flag Thenn=n-k:k=0End IfLoop,在剩余的n個數字中,去除多余額前導零,如:00010,只輸出10i=1:left=1Do While ②left=left+1i=i+1LoopLabel3.Caption=""For i=left To nLabel3.Caption=Label3.Caption +Str(a(i))Next iIf n=0 Then Label3.Caption="0"End Sub’數組a中,刪除head位置的數據,后續數據前移1位Sub ss(head As Integer,tail As Integer)For i=head To tail-1a(i+1)=a(i)Next iEnd Sub(1)若要清空label1中內容,能實現該功能的語句是 (單選,填字母:A.Labell.Label=""/B.Labell.Caption=“"/C.Labell.Clear)。(2)請在劃線處填入合適的代碼。(3)加框處代碼有錯,請改正。7、(2021紹興模擬15)為了把工廠中高低不等的物品按從低到高排好序,工程師發明了一種排序機械臂,它首先在參加排序的所有物品中同時選出高度最低和最高的物品,分別交換到左、右邊界,再縮小左、右邊界,然后在余下的物品中采用同樣的方法排序,直到所有物品成為一個有序的序列。編寫VB程序,實現上述排序功能:運行程序,單擊“讀取”按鈕Command1,在列表框Listl中顯示待排序的物品,然后單擊“排序”按鈕Command2,在列表框List2中顯示排序好的物品。程序運行界面如圖所示。請回答下列問題:若要程序運行時,窗體For m1的標題顯示為“物品排序”,則For mLoad)事件中應添加的代碼是(單選,填字母:A.For ml.Name="物品排序"/B.For ml.Text="物品排序"/C.For ml.Caption="物品排序")。(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正。Const m=9 'm表示物品個數Dim id(m)As Integer,gd(m)As IntegerPrivate Sub Command1 Click)讀取物品的信息依次存入數組id,gd中,并在列表框List1中顯示,代碼略End SubPrivate Sub Command2_Click)Dim LAs Integer,R As Integer,t As integerDim imin As Integer,imax As IntegerL=1:R=m分別指向待排序區間的左右邊界Do While Limin=L①For i=L+1To RIf gd(i)If gd(i)Next it=id(imin):id(imin)=id(L):id(L)=tt=gd(imin):gd(imin)=gd(L):gd(L)=tIf imax=L Then ② 考慮最大值恰好在L位置的情形t=id(imax):id(imax)=id(R):id(R)=tt=gd(imax):gd(imax)=gd(R):gd(R)=tL=L+1③LoopFor i=1To mList2.Addltem Str(id(i))+""+Str(gd(i))Next iEnd Sub8、(2021溫州十校模擬15)為方便習題講解,需對某次考試中選擇題得分率數據進行統計分析,找出選擇題得分率最低的前m項對應的題號及考點(若有與第m項得分率相同的,一并選取)。編寫VB程序,實現上述功能。運行程序時,先讀取每個選擇題的題號、得分率和考點,顯示在列表框List1中。在文本框Text1中輸入得分率最低的前m項值,單擊“統計”按鈕,按照得分率從小到大升序排序,并在列表框List2中輸出得分率最低前m項的題號、得分率及考點。程序運行界面如第15題圖所示。請回答下列問題:(1)“統計”按鈕的事件過程名是 。(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。(3)程序中加框處代碼神墻有錯,請改正。Dim n As IntegerDim th(0 To 100)As Integer,df(0 To 100)As Single,kd(1 To 100)As StringPrivate Sub For m_Load()’讀取題號、得分率和考點分別存入數組th、df和kd數組,在列表框List1中顯示,代碼略’選擇題的個數存入變量n,代碼略End SubFunction dq(x As String,k As Integer)As String’固定數據的位數dq=xDo While ①dq=dq+" "LoopEnd FunctionPrivate Sub Select_Click()Dim m As Integer,i As Integer,j As Integer,p As Integer,t As Integer,mm As IntegerList2.Clearm=Val(Text1.Text)i=1Do While i<=n-1p=iFor j=i+1 To nIf ② Thenp=jNext jIf p< >i Thent=th(i):th(i)=th(p):th(p)=tEnd IfIf i>m Or df(i)< >df(i-1) Then Exit Do’改錯i=i+1Loop③For i=1 To mmList2.AddItem dq(Str(th(i)),6)+dq(Str(df(th(i))),8)+dq(kd(th(i)),12)Next iEnd Sub9、(2021衢州模擬15)某市要組織高中生參加競技比賽。現要求在報名的n名學生中挑選出m名身高大于等于175cm的學生,被挑選出的學生兩兩組隊,且隊內兩名成員的體重之和不能超過175公斤。編寫VB程序,實現上述挑選、組隊功能。運行程序,在列表框List1中顯示m名身高大于等于175cm的學生信息,且根據體重數值降序排序。單擊“組隊”按鈕,在符合條件的情況下盡可能多的兩兩組隊,并將組隊結果顯示在列表框List2中。程序運行界面如第15題圖所示,實現上述功能的VB程序如下。請回答下列問題:(1)觀察代碼可知,該程序“組隊”按鈕的對象名為 。(2)請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正。Const n=20Dim id(1 To 20)As Integer,h(1 To 20)As Integer,w(1 To 20)As Integer ,mAs IntegerPrivate Sub For m Load()’從數據庫中讀取n名學生的編號、身高和體重分別存儲在數組id、h和w中,代碼略。m=0’存儲身高≥175cm的學生總數For i=1 To nk=iFor j=i+1 To nIf h(j)〉=175 ThenIf w(j)〉w(k) Then k=j‘(3)End IfNext jIf k< > i Thent=id(i):id(i)=id(k):id(k)=tt=h(i):h(i)=h(k):h(k)=tt=w(i):w(i)=w(k):w(k)=tEnd IfIf h(i)<175 Thenm=i-1Exit For ’結束挑選E1se①End IfList1.AddItem str(id(i))+""+Str(h(i))+""+Str(w(i))Next iEnd SubPrivate Sub Com_Click()L=1:R=mDo While LIf ② ThenList2.AddItem Str(id(L))+"號和"+Str(id(R))+"號組隊”L=L+1:R=R-1Else③End IfLoopEnd Sub10、 (2021慈溪模擬15)為了提高群眾的安全意識,需要從各個學校挑選志愿者做好防詐騙宣傳。組委會從數據庫中看到k(1〈=k<=11)個不同的學校共上報了n(k<=n〈=100)位志愿者。由于人數太多,為了快速決定志愿者人選,組委會決定從中選擇一段連續的區間,這個區間內每個報名的學校至少包含1名志愿者,同時要求滿足條件的區間長度最小,輸出區間內的志愿者名單。例如,有10條報名數據,來自5個不同的學校,學校編碼依次是2,1,2,4,3,3,5,5,3,5,則包含5個學校的最短區間是從第2個到第7個,并從List2中顯示所選區間中的志愿者姓名,程序界面如圖所示。(1)要使窗體For ml標題顯示“選取志愿者”,則需修改該窗體的 (單選,填字母:A.Text/B.Caption/C.Name(名稱))屬性。(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正。Dim bm(1 To 100)As Integer,k As Integer,xm(1 To 100)As String,n As IntegerPrivate Sub For m Load()‘本過程從數據庫中讀入指定數據到數組bm、xm中,并在List1中顯示‘獲取k,表示不同學校數;n表示報名記錄總數代碼略End SubPrivate Sub Command1_Click()Dim m As Integeri=k:j=nDo While i<=jm= ①If judge(m)< > 0 Thenj=m-1ans=m: start=judge(m)Elsei=m+1End IfLoopFor i=1 To ansList2. AddItem xm(i)Next iLabe11.Caption="共選出志愿者"+CStr(ans)+"人"End SubFunction judge(m As Integer)As Integer ‘judge函數用于返回區間起始位置Dim f(1 To 11)As Integer'f(i)表示i學校是否包含在區間Dim t As Integerjudge=0For i=1To n-m+1’枚舉以i為起點的區間內是否包含各個學校t=0For j=i To i+m-1If ② Thent=t+1f(bm(j))=1Next jIft=k Then ③ :Exit FunctionFor j=1 To kf(j)=0Next jNext iEnd Function11、(2021溫州新力量聯盟模擬15)某單位招聘人員,根據應聘人員的筆試成績從高到低取一定比例的人員進入面試,若按比例計算出的人數為小數,則直接取整(不四舍五入),若進入面試的最后1名有多個同分人員,同分人員也進入面試。程序運行界面如下,請完成后面的小題:(1)程序運行時自動清空文本框Text1中顯示的內容,應該在 事件處過程執行相關命令A.For m loadB.Textl ChangeC.Commandl Click(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正’人員編號和筆試成績分別存儲到數組變量id和score中,應聘總人數存儲在變量n中面試比例在文本框Text1中輸入,所輸入比例值必須使面試人數大于1且小于n,代碼略。Private Sub Command1_Click()Dim i As Integer,j As Integer,st As String,t As IntegerFor i=1To n-1’按筆試成績從高到低排序k=iFor j=i+1 To nIf ① Thenk=jNext jIf k< >i Thenst=id(k):id(k)=id(i):id(i)=stt=score(k):score(k)=score(i):score(i)=tEnd IfNext iNum= ②j=num+1Do While j〈=nIf score(j)=score(j+1) Then Exit Doj=j+1LoopFor k= ③List2.AddItem Str(k)+""+id(k)+""+Str(score(k))Next kEnd Sub12、(2021湖州模擬15)某夏令營按兩門考試科目總分從高分到低分依次錄取學生。如果錄取學生的最后一名出現有總分并列的情況,則并列的學生全部錄取。編寫VB程序實現以上功能,程序運行時在列表框List1中顯示全部學生的信息,在文本框Text1中輸入計劃招生人數,點擊“錄取”按鈕Command1后,在列表框List2中輸出錄取的學生信息,并在標簽Label1上顯示最終錄取的人數。程序運行界面如第15題圖所示。請回答下列問題:(1)如第15題圖所示,按鈕Command1上顯示的“錄取”是該按鈕對象的(單選,填字母:A.對象名/B.屬性名/C.方法名/D.屬性值)(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正。Const num=15Dim xm(num)As String,kml(num)As Integer,km2(num)As IntegerPrivate Sub For m Load()’讀取num個學生的姓名、科目1、科目2的成績,分別存儲到數組xm、kml、km2。’在列表框List1中輸出所有學生的姓名與成績,代碼略。End SubPrivate Sub Command1_Click()Dim rs As Integer,count As Integer,flag As BooleanDim i As Integer,j As Integer,t As Integer,tmp As Stringrs=Val(Text1.Text)List2.AddItem"姓名科目1科目2"count=0:i=1①Do While i〈=num And flagFor j=num-1 To i Step-1If ② Thentmp=xm(j):xm(j)=xm(j+1):xm(j+1)=tmpt=kml(j):kml(j)=kml(j+1):kml(j+1)=tt=km2(j):km2(j)=km2(j+1):km2(j+1)=tEnd IfNext jflag=FalseIf i<=num Or kml(i)+km2(i)=kml(i-1)+km2(i-1)Thencount=i:flag=TrueEnd Ifi=i+1LoopFor i=1 To countList2.AddItem xm(i)+""+Str(kml(i))+""+Str(km2(i))Next iLabe11.Caption="共錄取學生"+ ③ +"人"End Sub1 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫