資源簡介 進制和約瑟夫環1(2020年12月慈溪模擬15)二進制數據在傳輸過程中可能發生被篡改或者出錯的情況,為了能發現出錯的位置和數量,可以在每個字節(總共不超過1000個字節)數據后面增加一位二進制校驗位來檢測。加入二進制校驗位后,若該字節中“1”的個數(含校驗位)為偶數,則說明該字節信息出現了錯誤,若為奇數,則說明是正確的。如下表所示。編寫VB程序,功能如下:在文本框Text1輸入待檢測二進制數據串,單擊“開始校驗”按鈕,在列表框List1中輸出出錯的數量及位置(所在字節的編號,字節從1開始編號),程序運行界面如圖所示。請回答下列問題:(1)要使窗體標題文字顯示為“信息校驗”,則應設置窗體的 (單選:A.Form/B.Caption/C.Text)屬性。(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正。2、(2019新力量聯盟16)Base64編碼是常見的一種編碼方式,規則是把3個字節(24位)的數據按6位1組分成4組,然后將每組數據分別轉換為十進制,根據第16題1圖將這些十進制數所對應的字符連接,即為Base64碼。以編碼字符“Web”為例,字符“Web”對應的ASCII編碼分別是87,101,98,分別轉換為8位二進制數,按6位二進制數分組后再轉換成十進制,查找他們的對應字符,得到“Web”的Base64編碼為“V2Vi”。(1)若某字符串的Base64編碼為“QWEw”,則其原文是(2)小高根據上述描述,設計了一個如下的將n(n是3的整數倍)個ASCII編碼字符轉換Base64編碼的VB程序,請在劃線處填入合適的代碼。3、(2019年11月紹興一模16)16.對n位二進制數進行編碼(n是8的倍數),以8位二進制數為一段,每段插入4位二進制數,構成12位二進制數,依次處理,完成各段數據編碼。每段編碼方法如下:插入二進制位:在第1、2、4、8位置上插入4個二進制位r1、r2、r3、r4,初值為0。把原8位二進制數dl~d8從左往右依次填入剩余位置中,原數據位和插入的二進制位如圖a所示:計算插入數據位的值:把每個位置號轉換成4位二進制數,選出形如“***1”(“*”表示一位0或1)的位置號,則統計這些位置號對應數據位中的“1”的個數,若是奇數,則r1為1,否則為0;再選出形如“**1*”的位置號,則統計這些位置號對應數據位中的“1”的個數,若是奇數,則r2為1,否則為0;以此類推……如8位二進制數“10101101”的編碼過程如下:1.插入4個二進制位,初值為0,剩余位置依次填入原數據位,如圖b所示。2.計算插入數據位的值,選出形如“***1”的位置號,即1、3、5、7、9、11,統計這些位置號對應數據位中“1”的個數為2,故rl=0,同理可得:r2=1,r3=0,r4=1,如圖c所示。3.按位置號從小到大依次拼接各數據位得到最后編碼“011001011101”。(1)若原始二進制數據是“01101110”,則插入的數據位r1、r2、r3、r4的最終值依次為:(填數據,用逗號分隔)(2)編寫VB程序實現對文本框Text1中輸入的二進制數進行編碼,并在文本框Text2中顯示編碼結果。代碼如下,請在劃線處填入合適的代碼。4、(2021衢州高二期末16)高一年級開展“7選3”選科調查,現要求每位學生在預選卡上填寫個人信息(班級、學號、姓名)并選涂三門選考科目(少于或多于三門的預選卡作廢)。如小王預選組合是“物生技”其三門選考科目填涂情況如第16題圖a所示。預選卡回收后,通過讀卡機將相關信息讀入數據庫中,其中選科信息存儲規則:按照“政治、歷史、地理、物理、化學、生物、技術”順序存儲為一個7位二進制字符串。因此小王的選科信息二進制編號存儲為“0001011”。為了了解選科預選情況,統計選科組合種類及每種組合人數。小王設計并制作了VB程序。運行該程序,單擊“讀取”按鈕,從數據庫中讀取信息并顯示在列表框Listl中;單擊“統計”按鈕,在列表框List2中顯示每種選科組合人數(無人選擇的組合不顯示)及選科組合種類。程序運行界面如第16題圖b所示。(1)若某個學生“7選3”的預選選科組合為“政史生”,則該選科組合對應的十進制編號為 。(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。5、(2020年11月溫州一模15)小溫編寫了一個有關環形數據排序的VB程序,實現如下功能:排序前的原始數據在窗體左邊環形顯示,單擊“排序”按鈕Command1后,原始數據中最小元素的位置固定不變,從該位置開始數據按逆時針升序,排序后的數據在右邊環形顯示。例如,排序前a(1)到a(10)的數據依次為“1,11,19,18,0,16,8,9,17,4”,按順時針順序在窗體左邊環形顯示,則排序后a(1)到a(10)的數據依次為“9,8,4,1,0,19,18,17,16,11”,在窗體右邊環形顯示。程序運行界面如圖所示。請回答下列問題。(1)該環形數據排序的VB程序主要采用 (選填:冒泡排序/選擇排序)算法。(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正。6、(2020浙江三校15)在文本框Text1中輸入n個整數,按“逗號”分隔,編程實現n個數進行循環升序排序。步驟:①首先找到最小數,保持最小數位置不變,②接著找出第二小的數,并將它放在最小數的后面位置(若最小數已經在第n個位置,則將該數放在第1個位置),依次類推,直到所有數據排序成環,并輸出在文本框Text2中。程序的運行界如題15圖。(1)程序啟動后,窗體(對象名是paixu)的標題顯示“循環升序”,可在 (單選,填字母:A.Forml_load()B.Form_load)C.paixu_Load())事件過程中添加語句paixu.caption=”循環升序”。(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼(3)若在文本框Text1中輸入的數據是“9,8,7,6,5,1,2,3,4,10”,文本框Text2中第1個數據是 (加框處的位置)Private Sub Command1_Click()Dim n as integer‘變量n存儲整數的個數Dim a(1 To 100)As Integer,b(1 To 100)As Boolean數組a存儲文本框Text1中按“,”分割的整數;變量pos保存數組a中最小值所對應的位置;代碼略。b(pos)=Truepos=pos+1If pos=n+1 Then pos=1For i=1 To n-1k= ①For j=1 To nIf ② Then k=jNextjIf k < > pos Thent=a(k):a(k)=a(pos):a(pos)=tEnd Ifb(pos)=Truepos= ③Next i將循環升序后的數據顯示在文本框Text2中,代碼略End Sub7、(紹興柯橋模擬)對一個二進制數的各位數字重新編排,具體方法如下:每次取連續的8位二進制數,按以下方法進行轉換:從第1個位置開始,從1開始數數,數到m時取出該位數字(取出位置的數字不參與下次數數),從下一個位置開始,繼續從1開始數數,數到m時取出該位數字(當數到這8位二進制數的第8個位置后回到第1個位置繼續數數),重復上述操作,直至這8位二進制數的各個數字被取完。然后,依次把取出的8位數字拼接成新的二進制數。用以上方法把整個二進制數轉換完畢。編寫一個VB程序,實現功能如下:程序運行時從文本框Text1中讀入一個二進制數(長度為8的倍數),從文本框Text2中讀入整數m,單擊“轉換”按鈕Command1,對輸入的二進制數按上述方法轉換后在文本框Text3中顯示。程序運行界面如圖所示。(1)運行上述程序,若在文本框Textl中輸入“11001100”,Text2中輸入“3”,單擊“確定”按鈕,則文本框Text3中顯示的內容是 。(2)實現上述功能的VB程序如下,請在劃線處填入合適代碼。Const n=100Private Sub Command1_Click0Dim a(1To 8*n)As Integer,b(1 To 8*n)As IntegerDim f(1 To 8)As Integer,c(1 To 8)As IntegerDim m As Integer,s As String,res As StringDim iAs Integer,j As Integer,p As Integers=Textl.Textm=Val(Text2.Text)For i=1To8f(i)= ①Next i“以下代碼功能:根據整數m確定每一個字節二進制數各位數字的出列順序p=0For i=1 To 7j=1Do While j<=m②If f(p)=1 Then j=j+1Loopf(p)=0c(i)=pNext iFor j=1To 8If f(j)=1Then c(i)=j:Exit ForNext jFor i=1To Len(s)a(i)=Val(Mid(s,i,1))Next ii=1: start=-8Do While i<=Len(s)If i Mod 8=1Then ③b(i)=a(start+c((i-1) Mod 8+1))i=i+1Loopres=""For i=1To Len(s)res=res+Chr(Asc("0”)+b(i))Next iText3.Text=resEnd Sub8、(浙江五校聯考)小明編寫了一個數據加密的VB程序功能如下:在文本框Text1中輸入明文,單擊“加 密”按鈕Command1后在文本框Text2中顯示加密后的密文,運行界面如下圖所示。其中加密算法如下:①將明文中的ASCII碼每3個字節為一組(該明文字符串均為ASCII碼,且字節數為3的倍數),順次連接 后得到24位二進制數②將①中的24位二進制數每8位進行一次翻轉操作,比如原來的“0101 0001”變為“1000 1010”③將②所得24位二進制數逐位取反,比如原來的“1110”變為“0001”④將③中所得的24位二進制數每6位一組轉換為相應的十進制數,即得到對應的密文⑤將所有密文順序連接并輸出 實現上述功能的VB程序如下,請回答下列問題:(1)按照上述加密算法進行加密,則“ABC”的密文是(2)請在劃線處填入合適代碼:Dim a(1 To 24) As Integer, k As IntegerPrivate Sub Command1_Click()Dim mw As String, ch1,ch2, ch3 As String, s As StringDim m As Integer, i As Integer, j As Integers = ""mw = Text1.Text ‘mw存儲明文字符串For i = 1 To Len(mw) Step 3For j = 1 To 24 ‘初始化數組,用于存儲三個字節的二進制數a(j) = 0Next jk=1ch1 = Asc(Mid(mw, i, 1))ch2 = Asc(Mid(mw, i + 1, 1))ch3 = Asc(Mid(mw, i + 2, 1))Convert (ch1)‘調用自定義過程ConvertConvert (ch2)Convert (ch3)For j = 1 To 24 ‘逐位取反①Next jFor j = 1 To 4 m = 0For p = ② to j * 6 ‘每6位一組進行權值相加m = m * 2 + a(p)Next ps = s & m ‘&連接運算符,連接數字和字符串時,會將數字自動轉換為字符串Next jNext iText2.Text = sEnd SubSub Convert(x As Integer)Dim i As Integer, j As IntegerDo While x > 0a(k) = x Mod 2x = x \ 2k = k + 1Loopj = ③ ‘8位二進制數,高位補“0”k = k + jEnd Sub9、(2020年余姚模擬16)某8位日期加密授權碼生成方法描述如下:①授權碼由9位字符組成,前8位為日期的密文,最后1位為驗證碼。②日期的最后1位數字k(若k的值為0,令k=10),加密成26個大寫英語字母表中該位置對應的字母。③將26個大寫英文字母向左移k(日期的最后1位數字)個位置,并將移出的k個字母依次連接到最后。例如當k=3時,形成如圖所示新的字母排列順序。④日期的第1個數字至第7個數字的加密方法:計算第i個位置上的數字與第i+1個位置的數字及位置i三者相加的和,在新的字母表中取出該數字和對應的字母,作為第i個位置上數字加密字符。⑤計算日期的各個位置上數字之和sum,若和sum的值大于26,則在新的英文字母表中,sum Mod26對應字母轉換成小寫字母,作為驗證碼,否則驗證碼為新的英文字母表中對應字母。(1)根據上述加密算法,若輸人日期為“20000101”,則生成的注冊碼為(2)小張根據上述的加密算法,設計了一個對應的解密程序,其VB代碼如下,請在劃線處填入合適的代碼。10、(2020年8月Z20聯盟16)大寫字母分段加密。輸入n(n≤50)個大寫字母組成的原文字符串,以規模m為一段進行加密。加密方法為:(1)找出每段中最長的連續遞增子串長度max;(2)將該段每個字符后移max位進行加密,如果后移后的字母ASCII碼值超過90(Asc("Z")=90),則從小寫字母“a”(ASCII碼值為97)開始表示;(3)規模不足m部分不做處理。例如:n=10,原文字符串為“ABCXYEFDOK”,m=4時,處理過程如下:其中,第1段中字母“X”后移4位后超過字母“Z”的ASCII碼值,用“b”表示,第2段中字母“Y”后移2位用“a”表示。用VB編寫程序,程序運行時,在文本框Text1中輸入原文字符串,在文本框Text2中輸入每段個數,單擊“加密”按鈕Command1后,在文本框Text3.中顯示加密結果。桂序運行界面如圖所示。實現上述功能的VB程序如下,請回答下列問題:(1)已知加密結果是“RaVJON”,m=4,根據上述加密規則,推得原文是(2)請在劃線處填入合適的代碼 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫