資源簡介 登錄二一教育在線組卷平臺 助您教考全無憂高中信息技術綜合庫過程和自定義函數1一、高中信息技術綜合庫過程和自定義函數11.編程找出100到1000之間滿足以下條件的整數:該數和該數平方合并后的數字串中不存在重復的數字。例如209,其平方數為43681,209和43681合并后的數字串“20943681”中無重復數字,209就是符合條件的數。實現上述功能的VB代碼如下,但加框處代碼有錯,請改正。Private Sub Command1_Click()Dim x As Integer, y As Long, st As StringFor x=100 To 1000y=x^2st=Str(x) & Str(y)If Then ‘① List1. AddItem"x: "& Str(x) & "x2: "&Str(y) &"x&y: "& Str(st)End IfNext xEnd SubPrivate Function judge(s As String) As BooleanDim a(1 To 100) As StringFor i=1 To Len(s)a(i) =Mid(s, i, 1)Next iFor i =1 To Len(s)-1For j=i+ 1 To Len(s)If Then Exit Function. ‘② Next jNext iJudge=TrueEnd Function2.編寫一個將十進制數轉換為二進制的VB自定義函數,完成劃線處應填的語句。Function dTOb(x As Integer)As StringDim s As StringDo While x>0If x Mod 2=0 Then s="0"Else s="1" x=x\2LoopEnd Function3.在VB中,判斷一個整數的各位上的數字是否重復的自定義函數,請在程序劃線處填入合適的代碼。Private Function judge(t As Long)As BooleanDim s As String, s1 As String, i As Integer, j As Integers=Str(t): judge =FalseFor i =1 To Len(s)-1s1 = Mid(s, i, 1)For j =i+ 1 To Len(s)If ① Then Exit FunctionNext jNext i②End Function① ② 4.下列VB程序用于求2個正整數(均小于10000)的最大公約數,請在程序劃線處填入合適的代碼。Private Sub Command1_Click()Dim x As Integer, y As Integer, z As Integerx=Val(Text1.Text): y=Val(Text2.Text)①Text3.Text=Str(z)End SubFunction gcd(a As Integer, b As Integer)As IntegerDo While a< >bIf a>b Then a=a-b Elseb=b-aLoop②End Function① ② 5.小明編寫了一個尋找奇妙整數的VB程序。此整數的平方與立方正好用了0~9的10個數且每個數只用一次,例如69的平方為4761,69的立方為:328509,4761和328509剛好用了0~9的10數,并且沒有重復使用。現需從1至1000尋找這樣的奇妙整數并在列表框List1中顯示。實現上述功能的VB程序段如下:Private mand1_Click()Dim n As Integer, k As Integer, fAs Boolean ‘判斷字符k是否重復出現Dim s1 As String, s2 As String, i As Integer, j As IntegerFor n= 1 To 1000For i =0 To 9a(i)= TrueNext if = Trues1=CStr(n^2)s2 =CStr(n^3) ‘Cstr()函數的作用是將數字型變量改變成字符型變量For j = 1 To Len(s1)①If a(k)= True Thena(k)=FalseElsef = FalseExit ForEnd IfNext jIf ② Thenj=0Do While j<=9If a(i)=True Then f=False: Exit Doj=j+1LoopIf f = True Then List1. AddItem Str(n)End IfNext nEnd SubFunction Judge(s As String) As BooleanDim i As Integer, k As Integeri=1: Judge TrueDo While ③k =Val(Mid(s, i, 1))If a(k)=True Thena(k)=FalseElseJudge = FalseExit DoEnd Ifi=i+1LoopEnd Function請在程序劃線處填入合適的代碼。① ② ③ 6.對輸人的明文(由英文字母或數字組成的字符串)進行加密,輸出加密后得到的密文。數據加密方法為對明文中的每個字符進行如下處理:1)將該字符ASCI碼轉換成對應8位二進制;2)將對應8位二進制數進行按位取反(1變0;0變1);3)將產生的8位二進制數循環左移3次;4)最后產生的8位二進制數轉換成對應的十六進制數。例如:明文大寫字母“A”通過上述算法加密算法加密后生成的密文是“F5”,在文本框Text1中輸入明文,單擊“生成密文”按鈕Command1,加密后生成的密文顯示在文本框Text2中。(1)如果輸入明文為大寫字母“F”,則生成的密文是 。(2)請在劃線處填入合適的代碼。Function btoh(m As String)As String ‘將4位二進制數轉換成對應的十六進制數Dim s As Integer, i As Integer, str As Stringstr ="0123456789ABCDEF": s=0For i=1 To 4s=s*2+ Val(Mid(m, i, 1))Next i①End FunctionPrivate Sub Command1_Click()Dim ans As String, s As String, ch As String, ret As StringDim i As Integer, asc1 As Integer, n As Integer②ans=" "For i = 1 To Len(s)ch =Mid(s, i, 1) ‘取出第i個字符存入變量chasc1=Asc(ch)ret" "For m =1 To 8 ‘完成加密步驟1)和步驟2)n=(asc1+1)mod 2ret =n & ret③Next mret = Mid(ret, 4, 5)+ Mid(ret, 1, 3) ‘完成加密步驟3)和步驟4)s1=btoh(Mid(ret, 1, 4))s2 =btoh(Mid(ret, 5, 4))ans =ans & s1 & s2 ‘將第i個加密后的字符添加到變量ans的末尾Next iText2.Text = ansEnd Sub① ② ③ 7.某ASCII字符加密方法算法如下:⑴計算出該ASCII字符的8位二進制數值⑵將該數值分割為前4位與后4位兩個二進制數⑶分別將上述兩個4位二進制數轉換為十進制數⑷將每個十進制數轉換為1個加密字符,對應的“密碼表”如下值(十進制) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15加密字符 I 1 i k e C H N p o s t c a r d根據以上加密算法來推斷解密算法,下表顯示了字符串中兩個字符的解密過程:小明設計了一個解密程序,功能如下:在文本框Text1中輸入密文,單擊“解密”按鈕Command1,在文本框Text2中輸出解密結果。程序運行時界面如下圖所示。實現上述功能的VB程序如下,請回答下列問題:(1)請在劃線處填入合適的代碼。Private Sub Command1_Click()Dim z As String, a As String, b As StringDim i As Integer, y As Integerz = Text1.TextText2.Text =" "For i= 1 To ①a=Mid(z, i, 1)b= Mid(z, i+1, 1)②Text2.Text = Text2.Text + Chr(y)Next iEnd SubFunction zn(x As String)As Integer '得出加密字符對應密碼表中的十進制數Dim m As String, i As Integerm ="IlikeCHNpostcard"For i =0 To 15If ③ Thenzn=iExit ForEnd IfNext iEnd Function① ② ③ (2)若已知字符“a”的ASCI1碼值為97(十進制),加密字符HN對應的英文字母是 。8.有一數組 a 具有 n(1≤n≤100)個元素,分別為 a(1)到 a(n),數組元素都為正整數且有可能相等。對于每一個數組元素,如果它后面存在大于或等于該元素的數,則這兩個數可以組成一對。每個元素和自己也可以組成一對。例如:{3,7,2,4,8},可以組成 11 對,分別為(數字為下標):(1,1),(1, 2), (1, 4), (1, 5), (2, 2),(2,5), (3, 3), (3, 4), (3, 5), (4, 4), (4,5), (5, 5)。其中(1, 5)是距離最遠的一對,距離為4。小明編寫了一個VB程序,用于計算n個數組元素的最遠距離。具體功能如下:運行程序時,在列表框List1中顯示n個數組元素,單擊命令按鈕Command1,在文本框中顯示這n個數組元素的最遠距離。運行效果如圖所示。實現上述功能的 VB 代碼如下。Const n = 5 'n=5為例Dim a(1 To n) As Integer '用于記錄每個數組元素的值Dim b(1 To n) As Integer '用于記錄每個數組元素在原數組中的下標Private Sub Form_Load()'讀取一組正整數,存儲在數組 a 中'將每個數組元素在原數組中的下標存儲在數組 b 中'將數組元素顯示在列表框 List1中'代碼略End SubFunction Getans() As IntegerDim left As Integer, ans As Integerleft = 10000: ans = 0For i = 1 To nIf b(i) < left Then left = b(i)If b(i) - left > ans Then ans = b(i) - leftNext iGetans = ansEnd FunctionPrivate Sub Command1_Click()Dim i As Integer, j As Integer, t As IntegerFor i = 1 To nFor j = n To i + 1 Step -1If Thent = a(j): a(j) = a(j - 1): a(j - 1) = tt = b(j): b(j) = b(j - 1): b(j - 1) = tEnd IfNext jNext iText1.Text =End Sub(1)代碼“Private Sub Command1_Click( )”中表示加載在Command1上的事件是 。(單選,填字母:A.Click/B ._Click/C .Command1_Click)(2)程序代碼中,IF 語句后加框處代碼有誤,請改正 。(3)程序代碼中,將 Text1.Text 賦值語句補充完整 。(4)如程序運行界面所示數據,單擊命令按鈕 Command1后,數組元素 b(2)的值為 。9.數組 a 規模為(m+1)×n,其中 a(1) ~a(m n)元素中存儲數據,數據中m×n個元素按行序排列成一個數字矩陣如圖所示 計算每列數據的和,并依次存儲在m+1行對應的數組元素中 依據該算法思想,設計一個VB程序,實現該功能的代碼如下,請回答下列問題 (1)根據代碼可知,該程序的按鈕對象名是 (2)在程序劃線處填上合適代碼 Const m = 6Const n = 5Dim a(1 To (m + 1) n) As IntegerPrivate Sub Form_Load()'數組初始化,生成 m×n 個兩位數的隨機整數并賦值給數組aRandomizeFor i = 1 To m na(i)= ①Next iEnd SubPrivate Sub Cod1_Click()Dim i As Integer, j As IntegerFor i = 1 To n②Next i'將計算后數據,按 m + 1 行,n 列輸出到列表框中,代碼略End SubFunction sum(y As Integer) As Integer '函數功能是計算每列數據和sum = 0For i = ③sum = sum + a(i)Next iEnd Function① ② ③ 10.用26個互不重復的ASCI字符作為密碼本,根據英文字母在字母表中位置,替換為密碼本該位置的字符。現編寫將英文字母加密的VB程序,在文本框Text1中輸入明文,單擊“加密”按鈕Command1,在文本框Text2、Text3中輸出產生的密碼本和密文。程序運行界面如下圖所示。實現上述功能的VB代碼如下,但加框處代碼有錯,請改正。Private Sub Command1_Click()Dim i As Integer, mw As String, jm As Stringmw= Text1.Text: Text2.Text = my(26)For i =1 To Len(mw)c= Mid(mw, i, 1)If c>="A" And c<="Z" Or c>="a"And c<="2"Then‘①jm =jm+ Mid(Text2.Text, t, 1)Elsejm=jm +cEnd IfNext iText3.Text =jmEnd SubFunction my(n As Integer)As StringDim s As String, i As Integer, x As Integers ="ABCDEFGHIKLMNOPQRSTUVWXYZabc-defghijklmnopqrstuvwxyz0123456789"i=1Do While i <=nt=63-ix =Int(Rnd()*t+1)‘②s = Mid(s, 1, x-1)+ Mid(s, x+1, t-x)i=i+1LoopEnd Function① ② 11.有VB自定義函數的功能是求兩個數之間被3除多2,被5除多3的所有整數個數,請在程序劃線處填入合適的代碼。Function f(x1 As Integer, x2 As Integer)As IntegerDim t As Integer, i As IntegerIf x1 For i= ①If i Mod 3=2 And i Mod 5 = 3 Then ②Next iEnd Function① ② 12.在VB中,將一個二進制數轉化成十六進制的自定義函數代碼如下,請在程序劃線處填入合適的代碼。Function btoh(s As String)As StringDim i As Integer, s1 As String, t As IntegerDim str As String, j As Integerstr="0123456789ABCDEF"i= Len(s)Do While i >=1If ① Thens1= Mid(s, i-3, 4)Elses1 = Mid(s; 1, i)End Ift=0For j =1 To Len(s1)t= ②Next jbtoh = Mid(str, t + 1, 1)+btohi=i-4LoopEnd Function① ② 13.學校把各同學選考組合放在一個數據庫中,小明編寫了一個VB程序,用于查詢每個同學的選考組合,程序界面如圖所示,在文本框Text1中輸入學號,單擊“開始查詢”按鈕(Command1),就開始查找該學號的信息,如果找到對應的信息,就顯示所屬學生的姓名和選考組合;如果沒有找到,則顯示“找不到”。學校共有n名學生,數組a、b分別保存了本次考試所有學生的學號和姓名信息。數據庫數據按學號從小到大排列,第i個學生的學號保存在a(i),對應的姓名保存在b(i),c(i)保存該學生的選考組合。程序如下,在程序劃線處填入適當的代碼,把程序補充完整。Dim n As Integer, a(1000)As String,Dim b(1000)As String, c(1000)As StringPrivate Sub Command1_Click()Dim x As String, pos As IntegerDim conn As New ADODB. Connection,rs As NewADODB. Recordsetconn. ConnectionString="provider =Microsoft. ACA.OLEDB.12.0; data source="&.App. Path&"\students.accdb"conn. OpenSet rs. ActiveConnection = connrs. Open"學生信息"n=0 '考生數初始化Do While Not rs. EOFn =n+1a(n)=rs. Fields(0)b(n)=rs. Fields(1)c(n)=rs. Fields(2)①Loopx = Text1.TextIf pos >0 Then②Text2.Text=b(pos)Text3.Text =c(pos)ElseText2.Text="找不到"End IfEnd SubFunction Search(Key As String)As IntegerDim i As Integer, j As Integer, m As Integeri=1: j=n: Search =0Do While i <=j m=Fix((i+j)/2)If Key =a(m)Then③Exit FunctionElse lf a(m)> Key Thenj=m-1Elsei=m+1End IfLoopEnd Function① ② ③ 14.如果一個數從左往右讀和從右往左讀都一樣,那么這個數就叫做“回文數”。如果一個數的十進制和二進制表示都是回文數,則把這個數叫做“雙重回文數”。例如,十制數33是回文數,將其轉化為二進制表示(10001)也是回文數,所以33是雙重回文數。編寫程序用于查找1000以內的雙重回文數。(1)根據題目描述,十進制數99是否是“雙重回文數” (填:是/不是)。(2)實現上述功能的VB程序如下,請在劃線處填入合適代碼。Private Sub Command1_Click()Dim n As Integer, d As String, b As StringFor i = 1 To 999n=id=CStr(n) 'CStr函數的功能是數值轉換為字符串①If ishws(d)Aind ishws(b)ThenList1.AddItem Str(i)+" "+bEnd IfNext iEnd SubFunction dtob(k As Integer)As String '進制轉換Do While k >0dtob =CStr(k Mod 2)+ dtobk=k\2LoopEnd FunctionFunction ishws(x As String)As Booleanishws = TrueFor j=1 To Len(x) \2If ② Thenishws = FalseExit ForEnd IfNext jEnd Function① ② 答案解析部分1.【答案】judge(st);a(j)=a(i)【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】( 1 )自定義函數judge的功能是判斷數字s各位上的數字是否重復,并通過函數judge名返回函數的值。此處代碼應修改為judge(st)。( 2 ) 判斷的條件是第i個數與他后面的所有數進行比較,如果相同則跳出自定義函數,返回函數的值為False,否則執行judge= True語句此處代碼應修改為a(j)=a(i)。主程序中為調用自定義函數。【分析】本題考查的是自定義函數的應用。2.【答案】dTob=s+dTob【知識點】過程與自定義函數;進制及數制轉換【解析】【解答】自定義函數dTob的功能是將x轉換成二進制數,并通過函數名返回函數的值,橫線處代碼為: dTob=s+dTob。【分析】本題考查的是進制轉換與自定義函數的應用。3.【答案】s1=Mid(s, j, 1);judge =True【知識點】過程與自定義函數【解析】【解答】自定義函數judge的功能是判斷數字t各位上的數字是否重復,并通過函數judge名返回函數的值。判斷的條件是第i個數與他后面的所有數進行比較,如果相同則跳出自定義函數,故①處代碼為: s1=Mid(s, j, 1);返回函數的值為False,否則執行②語句,故②處代碼為:judge= True。【分析】本題考查的是自定函數的應用。4.【答案】z= gcd(x, y);gcd= a或gcd=b【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】自定義函數gcd的功能是計算a、b的最大公約數,并通過函數名gcd返回函數的值。主程序是調用自定義函數,把x和y分別賦值給a和b,計算的結果賦值給z。故①處代碼為:z=gcd(xy);②處代碼為:gcd=a或gcd=b。【分析】本題考查的是求最大公約數、自定義函數的應用。5.【答案】k=Val(Mid(s1, j, 1));Judge(s2);Judge = True【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】自定義函數judge的功能是判斷數字各位上的數字是否重復,并通過函數judge名返回函數的值。主程序中,先判斷n的平方s1是否有重復,取出每個數字k,故①處代碼為k=Val(Mid(s1, j, 1))。判斷下標為k的數組元素值是否是True,在調用自定義函數判斷s2不重復的基礎上接著判斷s1和s2中各個數字均不重復。故②處代碼為Judge(s2) ,③處代碼為Judge = True。【分析】本題考查的是自定義函數的應用。6.【答案】(1)CD(2)btoh = Mid(str, s + 1,1);s = Text1.Text;asc1= asc112【知識點】算法的控制結構;常量、變量及變量的賦值;過程與自定義函數【解析】【解答】( 1 )字母F的內碼為01000110 ,按位取反得到10111001,循環左移3位得到11001101對應十六進制數為CD。( 2 )①自定義函數btoh將4位-二進制數轉換成對應的十六進制數,先將4位二進制數轉換為十進制數s=s*2+ Val(Mid(m, i, 1)),然后根據求得的s去字符串str找對應的16進制字符,并通過函數名返回函數的值,即btoh=Mid(str, s + 1, 1)。 ②先接收輸入的明文放到變量s中即s =Text1.Text。③取得的字符ch對應的字符代碼asc1 =Asc(ch)為十進制數,需要將其轉換為二進制數并取反,所以asc1 =asc1\2.【分析】本題考查循環結構和自定義函數。7.【答案】(1)len(z)Step 2;zn(a)*16 + zn(b);Mid(m, i+ 1, 1)=x(2)g【知識點】算法的控制結構;過程與自定義函數【解析】【解答】( 1 )建z是輸入的密文,每次從中取出兩個字符,所以循環變量的范圍為i= 1 Tolen(z)Step 2。②所填內容肯定和y有關, y是-一個十進制數的ASCII值,該值應該去調用自定義函數,找出兩個字母的位置,同時第1個位置是高4位,是原來的16倍即y=zn(a)*16 +zn(b)。日在自定義函數中,要找變量x在密碼表中的位置,當他們相等時,就表示找到了,即Mid(m, i+ 1, 1)=x。( 2 )輸入HN后H在密碼表位置是6,N在密碼表位置是7,對應的二進制數為:01100111,轉換成十進制數是103,103- 97=6,是字符a后面的第6個字符即g。【分析】本題考查VB循環結構和自定義函數。8.【答案】(1)A(2)a(j) < a(j-1)(3)Str(Getans( ))(4)1【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用;過程與自定義函數;排序算法及程序實現【解析】【解答】( 1 )代碼"Private SubCommand1_ Click0"中表示加載在Command1上的事件是Click。( 2 )題中需要更改的代碼的程序為典型的冒泡排序,加框處的功能為數組相鄰兩個元素比較大小,以便進行升序排序所以代碼為a(j) < a(j- 1),如果兩元素值相等就不需要交換了( 3 )因為在"Text1.Text"輸出的是字符串,所以需要將計算出的距離數值轉換為字符串輸出,而題中數組元素的最遠距離是自定義函數Getans( )計算的,所以該處代碼為Str(Getans())。( 4 )如程序運行界面所示數據,單擊命令按鈕Command1后,數組a進行了升序排序,數組b存儲的每個數組元素在原數組中的下標也跟著對應的數據元素進行了排序,所以數組元素b(2)的值為1。【分析】本題考查對自定義函數的功能以及冒泡排序的理解。9.【答案】(1)Cod1(2)Int(Rnd * 90) + 10;a(m*n+i)=sum(i);ytom*nstepn【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】( 1 )根據代碼可知,該程序的按鈕對象名是Cod1。( 2 ) ①要生成mxn個兩位數的隨機整數并賦值給數組a,則需要使用隨機函數,代碼為: a(i)= Int(Rnd*90) +10。②把各列的和放到數組a中,代碼為a(m*n+i)=sum(i) (調用自定義函數)。③計算每列數據和的代碼為:for i =y to m*n step n sum=sum+a(i) next i , y為列數。【分析】本題考查自定義函數的應用以及對程序代碼的理解。10.【答案】t= Asc(c) Mod 32;my=i my+ Mid(s,x,1)【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】 ( 1 )自定義函數的功能是產生不重復的字符串,t表示在s中長度, x是[1, x]之間的隨機位置,把該位置上的字符連接到密鑰中,同時把該字符在s中去除。此處代碼修改為t= Asc(c) Mod 32。( 2 )處需要記性字符連接,此處代碼修改為my= my+ Mid(s, x, 1)。主程序中,找到字符c在字母表中位置t,并在密鑰中取出對應的加密字符。【分析】本題考查的是自定函數的應用。11.【答案】x2 To x1或x1 To x2 Step -1;f=f+ 1【知識點】過程與自定義函數【解析】【解答】自定義函數f的功能是求x2和x1兩個數之間被3除多2、被5除多3的所有整數個數。并通過函數名返回函數的值。①處循環從較大數到較小數,故此處代碼為: x2 Tox1或x1 To x2 Step-1。②處對滿足條件的數進行計數,故此處代碼為: f=f+1。【分析】本題考查的是自定義函數的應用。12.【答案】i>=4;t=t*2+Val(Mid(s1, j, 1))【知識點】常量、變量及變量的賦值;過程與自定義函數;進制及數制轉換【解析】【解答】自定義函數btoh的功能是將二進制數s轉換成十六進制數。轉換的方法是從低位開始,每4位二進制轉換成十進制數(不足4位,取剩下的所有字符),故0處代碼為: i>=4。根據十進制數的值在字符str中查找相應的十六進制值,故②處代碼為:t=t*2 +Val(Mid(s1, j, 1))。【分析】本題考查的是進制轉換與自定義函數的應用。13.【答案】rs. MoveNext;pos=Search(x);Search= m【知識點】過程與自定義函數;程序訪問數據庫【解析】【解答】在數據表進行查詢時記錄指針往下移,才能達到記錄的尾部,故①處代碼為rs.MoveNext。調用自定義函數去進行查找Text1中內容。故②處代碼為pos=Search(x)。在自定義函數中,通過函數名返回函數的值。故③處代碼為Search=m。【分析】本題考查的是自定函數的應用以及VB訪問連接數據庫。14.【答案】(1)是(2)b= dtob(n);Mid(x, j, 1)< > Mid(x, Len(x)-j+ i, 1)【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】( 1 )十進制數99轉換為二進制數是1100011,屬于回文數,所以99是雙重回文數。( 2 )自定義函數dtob的功能是將k轉換成二進制數。自定義函數ishws的功能是判斷字符x是否是回文數。主程序中先調用自定義函數dtob將轉換二進制數,若i及他對應的二進制數均為回文數,則他是雙重回文數。故@處代碼為b=dtob(n);②處代碼為Mid(x, j, 1)< > Mid(x, Len(x)-j+ i, 1)。【分析】本題考查的是自定函數的應用。二一教育在線組卷平臺(zujuan.21cnjy.com)自動生成 1 / 1登錄二一教育在線組卷平臺 助您教考全無憂高中信息技術綜合庫過程和自定義函數1一、高中信息技術綜合庫過程和自定義函數11.編程找出100到1000之間滿足以下條件的整數:該數和該數平方合并后的數字串中不存在重復的數字。例如209,其平方數為43681,209和43681合并后的數字串“20943681”中無重復數字,209就是符合條件的數。實現上述功能的VB代碼如下,但加框處代碼有錯,請改正。Private Sub Command1_Click()Dim x As Integer, y As Long, st As StringFor x=100 To 1000y=x^2st=Str(x) & Str(y)If Then ‘① List1. AddItem"x: "& Str(x) & "x2: "&Str(y) &"x&y: "& Str(st)End IfNext xEnd SubPrivate Function judge(s As String) As BooleanDim a(1 To 100) As StringFor i=1 To Len(s)a(i) =Mid(s, i, 1)Next iFor i =1 To Len(s)-1For j=i+ 1 To Len(s)If Then Exit Function. ‘② Next jNext iJudge=TrueEnd Function【答案】judge(st);a(j)=a(i)【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】( 1 )自定義函數judge的功能是判斷數字s各位上的數字是否重復,并通過函數judge名返回函數的值。此處代碼應修改為judge(st)。( 2 ) 判斷的條件是第i個數與他后面的所有數進行比較,如果相同則跳出自定義函數,返回函數的值為False,否則執行judge= True語句此處代碼應修改為a(j)=a(i)。主程序中為調用自定義函數。【分析】本題考查的是自定義函數的應用。2.編寫一個將十進制數轉換為二進制的VB自定義函數,完成劃線處應填的語句。Function dTOb(x As Integer)As StringDim s As StringDo While x>0If x Mod 2=0 Then s="0"Else s="1" x=x\2LoopEnd Function【答案】dTob=s+dTob【知識點】過程與自定義函數;進制及數制轉換【解析】【解答】自定義函數dTob的功能是將x轉換成二進制數,并通過函數名返回函數的值,橫線處代碼為: dTob=s+dTob。【分析】本題考查的是進制轉換與自定義函數的應用。3.在VB中,判斷一個整數的各位上的數字是否重復的自定義函數,請在程序劃線處填入合適的代碼。Private Function judge(t As Long)As BooleanDim s As String, s1 As String, i As Integer, j As Integers=Str(t): judge =FalseFor i =1 To Len(s)-1s1 = Mid(s, i, 1)For j =i+ 1 To Len(s)If ① Then Exit FunctionNext jNext i②End Function① ② 【答案】s1=Mid(s, j, 1);judge =True【知識點】過程與自定義函數【解析】【解答】自定義函數judge的功能是判斷數字t各位上的數字是否重復,并通過函數judge名返回函數的值。判斷的條件是第i個數與他后面的所有數進行比較,如果相同則跳出自定義函數,故①處代碼為: s1=Mid(s, j, 1);返回函數的值為False,否則執行②語句,故②處代碼為:judge= True。【分析】本題考查的是自定函數的應用。4.下列VB程序用于求2個正整數(均小于10000)的最大公約數,請在程序劃線處填入合適的代碼。Private Sub Command1_Click()Dim x As Integer, y As Integer, z As Integerx=Val(Text1.Text): y=Val(Text2.Text)①Text3.Text=Str(z)End SubFunction gcd(a As Integer, b As Integer)As IntegerDo While a< >bIf a>b Then a=a-b Elseb=b-aLoop②End Function① ② 【答案】z= gcd(x, y);gcd= a或gcd=b【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】自定義函數gcd的功能是計算a、b的最大公約數,并通過函數名gcd返回函數的值。主程序是調用自定義函數,把x和y分別賦值給a和b,計算的結果賦值給z。故①處代碼為:z=gcd(xy);②處代碼為:gcd=a或gcd=b。【分析】本題考查的是求最大公約數、自定義函數的應用。5.小明編寫了一個尋找奇妙整數的VB程序。此整數的平方與立方正好用了0~9的10個數且每個數只用一次,例如69的平方為4761,69的立方為:328509,4761和328509剛好用了0~9的10數,并且沒有重復使用。現需從1至1000尋找這樣的奇妙整數并在列表框List1中顯示。實現上述功能的VB程序段如下:Private mand1_Click()Dim n As Integer, k As Integer, fAs Boolean ‘判斷字符k是否重復出現Dim s1 As String, s2 As String, i As Integer, j As IntegerFor n= 1 To 1000For i =0 To 9a(i)= TrueNext if = Trues1=CStr(n^2)s2 =CStr(n^3) ‘Cstr()函數的作用是將數字型變量改變成字符型變量For j = 1 To Len(s1)①If a(k)= True Thena(k)=FalseElsef = FalseExit ForEnd IfNext jIf ② Thenj=0Do While j<=9If a(i)=True Then f=False: Exit Doj=j+1LoopIf f = True Then List1. AddItem Str(n)End IfNext nEnd SubFunction Judge(s As String) As BooleanDim i As Integer, k As Integeri=1: Judge TrueDo While ③k =Val(Mid(s, i, 1))If a(k)=True Thena(k)=FalseElseJudge = FalseExit DoEnd Ifi=i+1LoopEnd Function請在程序劃線處填入合適的代碼。① ② ③ 【答案】k=Val(Mid(s1, j, 1));Judge(s2);Judge = True【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】自定義函數judge的功能是判斷數字各位上的數字是否重復,并通過函數judge名返回函數的值。主程序中,先判斷n的平方s1是否有重復,取出每個數字k,故①處代碼為k=Val(Mid(s1, j, 1))。判斷下標為k的數組元素值是否是True,在調用自定義函數判斷s2不重復的基礎上接著判斷s1和s2中各個數字均不重復。故②處代碼為Judge(s2) ,③處代碼為Judge = True。【分析】本題考查的是自定義函數的應用。6.對輸人的明文(由英文字母或數字組成的字符串)進行加密,輸出加密后得到的密文。數據加密方法為對明文中的每個字符進行如下處理:1)將該字符ASCI碼轉換成對應8位二進制;2)將對應8位二進制數進行按位取反(1變0;0變1);3)將產生的8位二進制數循環左移3次;4)最后產生的8位二進制數轉換成對應的十六進制數。例如:明文大寫字母“A”通過上述算法加密算法加密后生成的密文是“F5”,在文本框Text1中輸入明文,單擊“生成密文”按鈕Command1,加密后生成的密文顯示在文本框Text2中。(1)如果輸入明文為大寫字母“F”,則生成的密文是 。(2)請在劃線處填入合適的代碼。Function btoh(m As String)As String ‘將4位二進制數轉換成對應的十六進制數Dim s As Integer, i As Integer, str As Stringstr ="0123456789ABCDEF": s=0For i=1 To 4s=s*2+ Val(Mid(m, i, 1))Next i①End FunctionPrivate Sub Command1_Click()Dim ans As String, s As String, ch As String, ret As StringDim i As Integer, asc1 As Integer, n As Integer②ans=" "For i = 1 To Len(s)ch =Mid(s, i, 1) ‘取出第i個字符存入變量chasc1=Asc(ch)ret" "For m =1 To 8 ‘完成加密步驟1)和步驟2)n=(asc1+1)mod 2ret =n & ret③Next mret = Mid(ret, 4, 5)+ Mid(ret, 1, 3) ‘完成加密步驟3)和步驟4)s1=btoh(Mid(ret, 1, 4))s2 =btoh(Mid(ret, 5, 4))ans =ans & s1 & s2 ‘將第i個加密后的字符添加到變量ans的末尾Next iText2.Text = ansEnd Sub① ② ③ 【答案】(1)CD(2)btoh = Mid(str, s + 1,1);s = Text1.Text;asc1= asc112【知識點】算法的控制結構;常量、變量及變量的賦值;過程與自定義函數【解析】【解答】( 1 )字母F的內碼為01000110 ,按位取反得到10111001,循環左移3位得到11001101對應十六進制數為CD。( 2 )①自定義函數btoh將4位-二進制數轉換成對應的十六進制數,先將4位二進制數轉換為十進制數s=s*2+ Val(Mid(m, i, 1)),然后根據求得的s去字符串str找對應的16進制字符,并通過函數名返回函數的值,即btoh=Mid(str, s + 1, 1)。 ②先接收輸入的明文放到變量s中即s =Text1.Text。③取得的字符ch對應的字符代碼asc1 =Asc(ch)為十進制數,需要將其轉換為二進制數并取反,所以asc1 =asc1\2.【分析】本題考查循環結構和自定義函數。7.某ASCII字符加密方法算法如下:⑴計算出該ASCII字符的8位二進制數值⑵將該數值分割為前4位與后4位兩個二進制數⑶分別將上述兩個4位二進制數轉換為十進制數⑷將每個十進制數轉換為1個加密字符,對應的“密碼表”如下值(十進制) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15加密字符 I 1 i k e C H N p o s t c a r d根據以上加密算法來推斷解密算法,下表顯示了字符串中兩個字符的解密過程:小明設計了一個解密程序,功能如下:在文本框Text1中輸入密文,單擊“解密”按鈕Command1,在文本框Text2中輸出解密結果。程序運行時界面如下圖所示。實現上述功能的VB程序如下,請回答下列問題:(1)請在劃線處填入合適的代碼。Private Sub Command1_Click()Dim z As String, a As String, b As StringDim i As Integer, y As Integerz = Text1.TextText2.Text =" "For i= 1 To ①a=Mid(z, i, 1)b= Mid(z, i+1, 1)②Text2.Text = Text2.Text + Chr(y)Next iEnd SubFunction zn(x As String)As Integer '得出加密字符對應密碼表中的十進制數Dim m As String, i As Integerm ="IlikeCHNpostcard"For i =0 To 15If ③ Thenzn=iExit ForEnd IfNext iEnd Function① ② ③ (2)若已知字符“a”的ASCI1碼值為97(十進制),加密字符HN對應的英文字母是 。【答案】(1)len(z)Step 2;zn(a)*16 + zn(b);Mid(m, i+ 1, 1)=x(2)g【知識點】算法的控制結構;過程與自定義函數【解析】【解答】( 1 )建z是輸入的密文,每次從中取出兩個字符,所以循環變量的范圍為i= 1 Tolen(z)Step 2。②所填內容肯定和y有關, y是-一個十進制數的ASCII值,該值應該去調用自定義函數,找出兩個字母的位置,同時第1個位置是高4位,是原來的16倍即y=zn(a)*16 +zn(b)。日在自定義函數中,要找變量x在密碼表中的位置,當他們相等時,就表示找到了,即Mid(m, i+ 1, 1)=x。( 2 )輸入HN后H在密碼表位置是6,N在密碼表位置是7,對應的二進制數為:01100111,轉換成十進制數是103,103- 97=6,是字符a后面的第6個字符即g。【分析】本題考查VB循環結構和自定義函數。8.有一數組 a 具有 n(1≤n≤100)個元素,分別為 a(1)到 a(n),數組元素都為正整數且有可能相等。對于每一個數組元素,如果它后面存在大于或等于該元素的數,則這兩個數可以組成一對。每個元素和自己也可以組成一對。例如:{3,7,2,4,8},可以組成 11 對,分別為(數字為下標):(1,1),(1, 2), (1, 4), (1, 5), (2, 2),(2,5), (3, 3), (3, 4), (3, 5), (4, 4), (4,5), (5, 5)。其中(1, 5)是距離最遠的一對,距離為4。小明編寫了一個VB程序,用于計算n個數組元素的最遠距離。具體功能如下:運行程序時,在列表框List1中顯示n個數組元素,單擊命令按鈕Command1,在文本框中顯示這n個數組元素的最遠距離。運行效果如圖所示。實現上述功能的 VB 代碼如下。Const n = 5 'n=5為例Dim a(1 To n) As Integer '用于記錄每個數組元素的值Dim b(1 To n) As Integer '用于記錄每個數組元素在原數組中的下標Private Sub Form_Load()'讀取一組正整數,存儲在數組 a 中'將每個數組元素在原數組中的下標存儲在數組 b 中'將數組元素顯示在列表框 List1中'代碼略End SubFunction Getans() As IntegerDim left As Integer, ans As Integerleft = 10000: ans = 0For i = 1 To nIf b(i) < left Then left = b(i)If b(i) - left > ans Then ans = b(i) - leftNext iGetans = ansEnd FunctionPrivate Sub Command1_Click()Dim i As Integer, j As Integer, t As IntegerFor i = 1 To nFor j = n To i + 1 Step -1If Thent = a(j): a(j) = a(j - 1): a(j - 1) = tt = b(j): b(j) = b(j - 1): b(j - 1) = tEnd IfNext jNext iText1.Text =End Sub(1)代碼“Private Sub Command1_Click( )”中表示加載在Command1上的事件是 。(單選,填字母:A.Click/B ._Click/C .Command1_Click)(2)程序代碼中,IF 語句后加框處代碼有誤,請改正 。(3)程序代碼中,將 Text1.Text 賦值語句補充完整 。(4)如程序運行界面所示數據,單擊命令按鈕 Command1后,數組元素 b(2)的值為 。【答案】(1)A(2)a(j) < a(j-1)(3)Str(Getans( ))(4)1【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用;過程與自定義函數;排序算法及程序實現【解析】【解答】( 1 )代碼"Private SubCommand1_ Click0"中表示加載在Command1上的事件是Click。( 2 )題中需要更改的代碼的程序為典型的冒泡排序,加框處的功能為數組相鄰兩個元素比較大小,以便進行升序排序所以代碼為a(j) < a(j- 1),如果兩元素值相等就不需要交換了( 3 )因為在"Text1.Text"輸出的是字符串,所以需要將計算出的距離數值轉換為字符串輸出,而題中數組元素的最遠距離是自定義函數Getans( )計算的,所以該處代碼為Str(Getans())。( 4 )如程序運行界面所示數據,單擊命令按鈕Command1后,數組a進行了升序排序,數組b存儲的每個數組元素在原數組中的下標也跟著對應的數據元素進行了排序,所以數組元素b(2)的值為1。【分析】本題考查對自定義函數的功能以及冒泡排序的理解。9.數組 a 規模為(m+1)×n,其中 a(1) ~a(m n)元素中存儲數據,數據中m×n個元素按行序排列成一個數字矩陣如圖所示 計算每列數據的和,并依次存儲在m+1行對應的數組元素中 依據該算法思想,設計一個VB程序,實現該功能的代碼如下,請回答下列問題 (1)根據代碼可知,該程序的按鈕對象名是 (2)在程序劃線處填上合適代碼 Const m = 6Const n = 5Dim a(1 To (m + 1) n) As IntegerPrivate Sub Form_Load()'數組初始化,生成 m×n 個兩位數的隨機整數并賦值給數組aRandomizeFor i = 1 To m na(i)= ①Next iEnd SubPrivate Sub Cod1_Click()Dim i As Integer, j As IntegerFor i = 1 To n②Next i'將計算后數據,按 m + 1 行,n 列輸出到列表框中,代碼略End SubFunction sum(y As Integer) As Integer '函數功能是計算每列數據和sum = 0For i = ③sum = sum + a(i)Next iEnd Function① ② ③ 【答案】(1)Cod1(2)Int(Rnd * 90) + 10;a(m*n+i)=sum(i);ytom*nstepn【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】( 1 )根據代碼可知,該程序的按鈕對象名是Cod1。( 2 ) ①要生成mxn個兩位數的隨機整數并賦值給數組a,則需要使用隨機函數,代碼為: a(i)= Int(Rnd*90) +10。②把各列的和放到數組a中,代碼為a(m*n+i)=sum(i) (調用自定義函數)。③計算每列數據和的代碼為:for i =y to m*n step n sum=sum+a(i) next i , y為列數。【分析】本題考查自定義函數的應用以及對程序代碼的理解。10.用26個互不重復的ASCI字符作為密碼本,根據英文字母在字母表中位置,替換為密碼本該位置的字符。現編寫將英文字母加密的VB程序,在文本框Text1中輸入明文,單擊“加密”按鈕Command1,在文本框Text2、Text3中輸出產生的密碼本和密文。程序運行界面如下圖所示。實現上述功能的VB代碼如下,但加框處代碼有錯,請改正。Private Sub Command1_Click()Dim i As Integer, mw As String, jm As Stringmw= Text1.Text: Text2.Text = my(26)For i =1 To Len(mw)c= Mid(mw, i, 1)If c>="A" And c<="Z" Or c>="a"And c<="2"Then‘①jm =jm+ Mid(Text2.Text, t, 1)Elsejm=jm +cEnd IfNext iText3.Text =jmEnd SubFunction my(n As Integer)As StringDim s As String, i As Integer, x As Integers ="ABCDEFGHIKLMNOPQRSTUVWXYZabc-defghijklmnopqrstuvwxyz0123456789"i=1Do While i <=nt=63-ix =Int(Rnd()*t+1)‘②s = Mid(s, 1, x-1)+ Mid(s, x+1, t-x)i=i+1LoopEnd Function① ② 【答案】t= Asc(c) Mod 32;my=i my+ Mid(s,x,1)【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】 ( 1 )自定義函數的功能是產生不重復的字符串,t表示在s中長度, x是[1, x]之間的隨機位置,把該位置上的字符連接到密鑰中,同時把該字符在s中去除。此處代碼修改為t= Asc(c) Mod 32。( 2 )處需要記性字符連接,此處代碼修改為my= my+ Mid(s, x, 1)。主程序中,找到字符c在字母表中位置t,并在密鑰中取出對應的加密字符。【分析】本題考查的是自定函數的應用。11.有VB自定義函數的功能是求兩個數之間被3除多2,被5除多3的所有整數個數,請在程序劃線處填入合適的代碼。Function f(x1 As Integer, x2 As Integer)As IntegerDim t As Integer, i As IntegerIf x1 For i= ①If i Mod 3=2 And i Mod 5 = 3 Then ②Next iEnd Function① ② 【答案】x2 To x1或x1 To x2 Step -1;f=f+ 1【知識點】過程與自定義函數【解析】【解答】自定義函數f的功能是求x2和x1兩個數之間被3除多2、被5除多3的所有整數個數。并通過函數名返回函數的值。①處循環從較大數到較小數,故此處代碼為: x2 Tox1或x1 To x2 Step-1。②處對滿足條件的數進行計數,故此處代碼為: f=f+1。【分析】本題考查的是自定義函數的應用。12.在VB中,將一個二進制數轉化成十六進制的自定義函數代碼如下,請在程序劃線處填入合適的代碼。Function btoh(s As String)As StringDim i As Integer, s1 As String, t As IntegerDim str As String, j As Integerstr="0123456789ABCDEF"i= Len(s)Do While i >=1If ① Thens1= Mid(s, i-3, 4)Elses1 = Mid(s; 1, i)End Ift=0For j =1 To Len(s1)t= ②Next jbtoh = Mid(str, t + 1, 1)+btohi=i-4LoopEnd Function① ② 【答案】i>=4;t=t*2+Val(Mid(s1, j, 1))【知識點】常量、變量及變量的賦值;過程與自定義函數;進制及數制轉換【解析】【解答】自定義函數btoh的功能是將二進制數s轉換成十六進制數。轉換的方法是從低位開始,每4位二進制轉換成十進制數(不足4位,取剩下的所有字符),故0處代碼為: i>=4。根據十進制數的值在字符str中查找相應的十六進制值,故②處代碼為:t=t*2 +Val(Mid(s1, j, 1))。【分析】本題考查的是進制轉換與自定義函數的應用。13.學校把各同學選考組合放在一個數據庫中,小明編寫了一個VB程序,用于查詢每個同學的選考組合,程序界面如圖所示,在文本框Text1中輸入學號,單擊“開始查詢”按鈕(Command1),就開始查找該學號的信息,如果找到對應的信息,就顯示所屬學生的姓名和選考組合;如果沒有找到,則顯示“找不到”。學校共有n名學生,數組a、b分別保存了本次考試所有學生的學號和姓名信息。數據庫數據按學號從小到大排列,第i個學生的學號保存在a(i),對應的姓名保存在b(i),c(i)保存該學生的選考組合。程序如下,在程序劃線處填入適當的代碼,把程序補充完整。Dim n As Integer, a(1000)As String,Dim b(1000)As String, c(1000)As StringPrivate Sub Command1_Click()Dim x As String, pos As IntegerDim conn As New ADODB. Connection,rs As NewADODB. Recordsetconn. ConnectionString="provider =Microsoft. ACA.OLEDB.12.0; data source="&.App. Path&"\students.accdb"conn. OpenSet rs. ActiveConnection = connrs. Open"學生信息"n=0 '考生數初始化Do While Not rs. EOFn =n+1a(n)=rs. Fields(0)b(n)=rs. Fields(1)c(n)=rs. Fields(2)①Loopx = Text1.TextIf pos >0 Then②Text2.Text=b(pos)Text3.Text =c(pos)ElseText2.Text="找不到"End IfEnd SubFunction Search(Key As String)As IntegerDim i As Integer, j As Integer, m As Integeri=1: j=n: Search =0Do While i <=j m=Fix((i+j)/2)If Key =a(m)Then③Exit FunctionElse lf a(m)> Key Thenj=m-1Elsei=m+1End IfLoopEnd Function① ② ③ 【答案】rs. MoveNext;pos=Search(x);Search= m【知識點】過程與自定義函數;程序訪問數據庫【解析】【解答】在數據表進行查詢時記錄指針往下移,才能達到記錄的尾部,故①處代碼為rs.MoveNext。調用自定義函數去進行查找Text1中內容。故②處代碼為pos=Search(x)。在自定義函數中,通過函數名返回函數的值。故③處代碼為Search=m。【分析】本題考查的是自定函數的應用以及VB訪問連接數據庫。14.如果一個數從左往右讀和從右往左讀都一樣,那么這個數就叫做“回文數”。如果一個數的十進制和二進制表示都是回文數,則把這個數叫做“雙重回文數”。例如,十制數33是回文數,將其轉化為二進制表示(10001)也是回文數,所以33是雙重回文數。編寫程序用于查找1000以內的雙重回文數。(1)根據題目描述,十進制數99是否是“雙重回文數” (填:是/不是)。(2)實現上述功能的VB程序如下,請在劃線處填入合適代碼。Private Sub Command1_Click()Dim n As Integer, d As String, b As StringFor i = 1 To 999n=id=CStr(n) 'CStr函數的功能是數值轉換為字符串①If ishws(d)Aind ishws(b)ThenList1.AddItem Str(i)+" "+bEnd IfNext iEnd SubFunction dtob(k As Integer)As String '進制轉換Do While k >0dtob =CStr(k Mod 2)+ dtobk=k\2LoopEnd FunctionFunction ishws(x As String)As Booleanishws = TrueFor j=1 To Len(x) \2If ② Thenishws = FalseExit ForEnd IfNext jEnd Function① ② 【答案】(1)是(2)b= dtob(n);Mid(x, j, 1)< > Mid(x, Len(x)-j+ i, 1)【知識點】常量、變量及變量的賦值;過程與自定義函數【解析】【解答】( 1 )十進制數99轉換為二進制數是1100011,屬于回文數,所以99是雙重回文數。( 2 )自定義函數dtob的功能是將k轉換成二進制數。自定義函數ishws的功能是判斷字符x是否是回文數。主程序中先調用自定義函數dtob將轉換二進制數,若i及他對應的二進制數均為回文數,則他是雙重回文數。故@處代碼為b=dtob(n);②處代碼為Mid(x, j, 1)< > Mid(x, Len(x)-j+ i, 1)。【分析】本題考查的是自定函數的應用。二一教育在線組卷平臺(zujuan.21cnjy.com)自動生成 1 / 1 展開更多...... 收起↑ 資源列表 高中信息技術綜合庫過程和自定義函數1(學生版).docx 高中信息技術綜合庫過程和自定義函數1(教師版).docx 縮略圖、資源來源于二一教育資源庫