高考專題復(fù)習(xí)專題五數(shù)制轉(zhuǎn)換_第1頁
高考專題復(fù)習(xí)專題五數(shù)制轉(zhuǎn)換_第2頁
高考專題復(fù)習(xí)專題五數(shù)制轉(zhuǎn)換_第3頁
高考專題復(fù)習(xí)專題五數(shù)制轉(zhuǎn)換_第4頁
高考專題復(fù)習(xí)專題五數(shù)制轉(zhuǎn)換_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、專題五數(shù)制轉(zhuǎn)換喙真.整!恬漫酗(2019 1月浙江學(xué)考)小紅編寫了一個將5位以內(nèi)的十六進制正整數(shù)轉(zhuǎn)化成十 進制數(shù)的VB程序,功能如下:在文本框 Textl中輸入一個十六進制正整數(shù),單 擊“轉(zhuǎn)換”按鈕Commandl,在標(biāo)簽Label3中顯示結(jié)果。程序運行界面如圖所示c要使窗體Forml標(biāo)題顯示“數(shù)制轉(zhuǎn)換”,則需該窗體的 印選,填字母: A.Font/ B . Caption/ C. BackColor)屬性。要實現(xiàn)上述功能的VB程序如下,請在劃線處填入合適的代碼。Private Sub Command1_Click() Dim x As String, ch As String Dim fla

2、g As Boolean, i As Integer, result As Long x _CD i = 1 result = 0 flag = True ch = Mid(x, 1, 1) Do While i = 0 And ch = A” And ch v= F” Thenresult = result * 16 + (Asc(ch) Asc( A ) + 10) Elself ch = a And ch v= f Thenresult = result * 16 + (Asc(ch) Asc(“ a)+10) ElseflagEnd IfflagEnd IfFalsei = i + 1

3、ch _ LoopIf flag = True ThenLabel3.Caption = Str(result)ElseLabel3.Caption = 輸入錯誤” End IfEnd Sub若在文本框Text1中輸入5+9,單擊“轉(zhuǎn)換”按鈕后,標(biāo)簽Label3中顯示的內(nèi) 容是 印選,填字母:A.14 / B. E / C.輸入錯誤)。解析 從語句ch = Mid(x, 1, 1)來看,x是文本框Text1輸入字符。Ch為每次取出字符,如果不是 0 9或AF或af的字符,則flag = False答案 (1)B (2)Text1.Text Mid(x, i, 1)(3)C(2018 4月浙江學(xué)

4、考)某種編碼以4位二進制碼為一組,每組前兩位表示方向, 后兩位表示距離。編寫一個程序,將編碼翻譯成方向和距離,距離值為每組編碼 后兩位二進制碼轉(zhuǎn)換為十進制數(shù)的值。具體功能如下:在文本框 Text1中輸入連 續(xù)多組編碼,單擊“翻譯”按鈕 Command1,結(jié)果顯示在列表框List1中。程序運行界面如下圖所示。(1)要使程序運行時,文本框Text1的Width屬性值為2018,可在Form_Load事件 過程中添加語句 (單選,填字母:A.Width=2018 / B. Text1.Width = 2018 / C. Width.Text1 = 2018)。實現(xiàn)上述功能的VB程序如下,請在劃線處填

5、入合適的代碼Private Sub Command1_Click()Dim s As String, c As String, d As StringDim n As Integer, bl As Integer, b2 As Integer, v As Integer, i As Integer s = Text1.Text: n = Len(s): i = 1 Do While i 0a= n Mod 2n= n2t= s=Str(a)+sLoopV=t Mod 2Text2.Text=sLabel3.Caption=抽驗位值 +End Sub(3)運行該程序,在文本框Textl中輸入22

6、,單擊“計算”按鈕,則顯示的校驗位 值是。解析(1)本小題考查對象的屬性設(shè)置,文本框中的顯示內(nèi)容為文本框的Text”屬性。(2)該算法通過“除二取余”將十進制的待校驗數(shù)n轉(zhuǎn)換為二進制數(shù)s,變量 t將二進制數(shù)各數(shù)位上的0”或1”累加起來(統(tǒng)計二進制數(shù)據(jù)中1”的個數(shù)),即“t = t + a。v = t mod 2用于判斷t的奇偶性,當(dāng)v=1時,t為奇數(shù),當(dāng)v = 0時,t 為偶數(shù),校驗位值可以從 t的奇偶性來判斷,校驗位值為(1 v)或(v1),通過 Label3的Caption屬性值輸出,需轉(zhuǎn)化為文本型, 處應(yīng)為str(1v)或str(Abs(v -1)o (3)十進制數(shù)22轉(zhuǎn)化為二進制數(shù)為1

7、0110”,各數(shù)位上的0”或1”相加得3, 為奇數(shù),校驗位值為00答案(1)Text (2) t+a str(1 v) (3)04.某數(shù)據(jù)加密方法描述如下:1)以字節(jié)為單位進行加密處理;2)將1個字節(jié)的8位二進制數(shù)分割成前4位與后4位兩個二進制數(shù);3)分別將上述兩個4位二進制數(shù)轉(zhuǎn)換為十進制數(shù);4)將每個十進制數(shù)轉(zhuǎn)換為1個加密字符,對應(yīng)的“密碼表”如下:值(十 進制)0123456789101112131415加密字符IIikECHNPostcard小明按照上述方法,設(shè)計了一個字符串(僅包含ASCII字符)加密的VB程序,功 能如下:單擊“加密”按鈕 Command1,程序依次將文本框 Text

8、1中每個字符的 ASCII碼值作為1個字節(jié)轉(zhuǎn)換為兩個加密字符,連接這些加密字符,最后在文本 框Text2中輸出加密結(jié)果。下表顯示了字符串中一個字符的加密過程:一轉(zhuǎn)摸前字符m一字符m的R5CU碼卜選刪憂一對應(yīng)的二進制教一時虛的一時虛的神密字符程序運行效果如圖所示:日字打中加尼:部器:jet日字打中加尼:部器:jet幅fct*a.UBHW Hl 由實現(xiàn)上述功能的VB程序如下:(1)請在劃線處填入合適代碼。Private Sub Command1_Click()Dim n As Integer, s As String, i As Integer, ss As StringDim a As Inte

9、ger存儲加密前字符的 ASCII碼Dim b1 As Integer, b2 As Integer 分別存儲分割、轉(zhuǎn)換后的兩個十進制數(shù) s=Text1.TextFor i= 1 To na=Asc(Mid(s, i, 1) b1=a16b2 = a Mod 16ss= ss+ Code2Char(b1)+ Code2Char(b2)Next iText2.Text= ssEnd Sub十進制值轉(zhuǎn)換為加密字符的函數(shù)Function Code2Char(c As Integer)As StringDim s As Strings= IlikeCHNpostcard”Code2Cha aEnd F

10、unction若將“密碼表”中值為“0寸應(yīng)的加密字符“I改為“i,”加密后的密文可能無法解密,原因是解析 變量i表示字符在字符串中的位置,n表示字符串長度。在自定義函數(shù)中,函數(shù)名Code2Char將作為返回值,參數(shù)c表示某個數(shù)字,其值范圍在0, 15之間,當(dāng)c= 0時,對應(yīng)密碼表第1個字符,因此他在密碼本中位置為c+ 1。加密字符r”IIIIII改為i密碼本中有兩個i,解密成0或2兩個數(shù)。答案 n=Len(s)或 n= Len(Textl.Text) Mid(s, c+ 1, 1)(2)加密字符i對應(yīng)兩個值0, 2重難突破練看點突甘難在計算機中,存儲信息的基本單位是字節(jié),且所有的信息都是二進制

11、數(shù)表示,但 二進制比較冗長,把一個字節(jié)的8個位分成高4位和低4位兩部分,每部分轉(zhuǎn)換 成1位十六進制數(shù),即一個字節(jié)在計算機中用8個位存儲,但在查看內(nèi)碼或其他操作時,可以用2個十六進制數(shù)表示。因此經(jīng)常進行二進制、十進制和十六進制 之間的轉(zhuǎn)換??键c訓(xùn)練國用牙揶汕考點1十進制數(shù)向其他進制數(shù)轉(zhuǎn)換1.十進制數(shù)向二進制或十六進制轉(zhuǎn)換時,用該數(shù)除以2或16,把商作為被除數(shù),重復(fù)計算,值到得到的商為0為止,把每次的余數(shù)反向連接起來,組成新的進制 數(shù)。2,十六進制數(shù)的基數(shù)為0 9及A F,因此將每次除的余數(shù) 0 15分別對應(yīng)以 上字符,可以有兩種方法,一是在 1個“0123456789ABCDEF”字符串中用 M

12、id 函數(shù)取出相對應(yīng)的字符,二是利用字符內(nèi)碼,轉(zhuǎn)換成相應(yīng)的字符,在轉(zhuǎn)換之前要 進行判斷。3.數(shù)值小于255的正整數(shù)n,轉(zhuǎn)換成十六進制,可以將 n16和n Mod 16在上述 的字符串中,取出兩個數(shù)對應(yīng)的字符即可?!纠?】 用VB編寫正整數(shù)十進制轉(zhuǎn)換為十六進制的程序,運行界面如圖所示。 程序功能如下:在文本框Text1中輸入待轉(zhuǎn)換的十進制值,單擊“十進制轉(zhuǎn)換十 六進制”按鈕Command1,在文本框Text2中輸出轉(zhuǎn)換結(jié)果。十遵制軟:產(chǎn)【 遺訓(xùn):換十六.和請在程序的劃線處填寫合適的代碼?!痉椒ㄒ弧縋rivate Sub Command1_Click() Dim a As String, s As

13、 StringDim r As Integer, x As Integerx = Val(Text1.Text) s =s1 = 0123456789ABCDEF”Do Whiler = x Mod 16s2 = Mid(s1, r + 1, 1) x = x 16LoopText2.Text = sEnd Sub【方法二】Private Sub Command1_Click()Dim a As String, s As StringDim r As Integer, x As Integerx = Val(Text1.Text)s =Do While x 0If r 9 ThenElses2

14、 = Trim(Str(r) m畫微的功能是去除字符兩端的空格 End Ifs = s2 + s x = x 16LoopEnd Sub解析本題考核的知識點十進數(shù)向其他進制數(shù)的轉(zhuǎn)換。關(guān)鍵是如何將數(shù)字轉(zhuǎn)換成相對應(yīng)的字符。方法一中采用在某個字符串取出相應(yīng)位置的字符,方法二中采用內(nèi)碼的方法。答案【方法一】x 0 或x0 s = s2 + s【方法二】 r = x Mod 16 s2 = Chr(r + 55)【變式訓(xùn)練11小林為了將十進制數(shù)轉(zhuǎn)化為k進制數(shù)(k介于216之間),設(shè)計 如下界面程序:在文本框 Textl中輸入一個十進制數(shù),在文本框 Text2中輸入整 數(shù)k(范圍在2到16之間),單擊“運

15、行”按鈕Commandl,程序?qū)⑹M制轉(zhuǎn)化為 k進制的,并在標(biāo)簽Label1中輸出結(jié)果。請回答下列問題:輸入十進制濟轉(zhuǎn)怏進制方1高E睛果為jiiio 總行程序代碼如下,請在劃線處補充完整。Private Sub Command1_Click()d = Val(Text1.Text)k = Val(Text2.Text)_力力s =Do While d 0r = d Mod kIf r = 10 Thens2 = Mid( ABCDEF,, 1)Elses2 = Trim(Str(r)End Ifs = s2 + s(21LoopLabel1.Caption = 結(jié)果為 + sEnd Sub(2

16、)運行該程序,在文本框Text1中輸入“38;文本框Text2中輸入“2,”單擊“運行”按鈕,則Label1顯示的內(nèi)容為是 解析 本題的關(guān)鍵是當(dāng)余數(shù)如果超出9,即把10- 15如何轉(zhuǎn)換成A-F之間字符。答案 r9 d = d k (2)100110考點2其他進制數(shù)向十進制數(shù)轉(zhuǎn)換.如果是一位十六進制數(shù)字轉(zhuǎn)十進制,分0 9和A F兩種情況,0 9的可以用Val函數(shù)進行轉(zhuǎn)換,A F字符可以用其內(nèi)碼減去55進行轉(zhuǎn)換。.按權(quán)展開相加法。從低位開始,把每一位上的數(shù)乘以該位數(shù)的權(quán), 把每次的乘 積相加。如(1011)2= 1X 20+ 1 X21 + 0X22+ 1X 23, 38H=8X16+3X 161

17、 = 8+48二 56D。相應(yīng)的代碼是For i = Len(s) To 1 Step 1t = Val(Mid(s, i, 1) * 2 A (Len(s) i) n = n + tNext i3.計算左邊第1位值t,從第2位開始,把該數(shù)表示成前面的數(shù)左移一位(在后面 添加1個0)。如將二進制數(shù)1101B和十六進制數(shù)A1B2H轉(zhuǎn)換成十進制數(shù)的過程, 其中i表示每次讀取的位置,ch表示每次讀出的數(shù)字。一進制數(shù)向十進制轉(zhuǎn)換十六進制數(shù)向十進制轉(zhuǎn)換iChticht1“ 11B1“ A”AH1“ 110B+ 1B2“ 1A0H + 1H0“ 011B+0B3“ B”A1H +BH1“ 1110B+1B

18、4“ 2A1BH + 2H二進制數(shù)和十六進制數(shù)后面添加1個0,其值分別為原來的2和16倍。相應(yīng)的代碼是For i = 1 To Len(s)ch = Mid(s, i, 1)If ch = 0 And ch v= 9 Thent = Val(ch)Elset = Asc(ch) 55End If n = n * 16 + tNext i【例2】RGB色彩模式是工業(yè)界的一種顏色標(biāo)準(zhǔn), 是通過對紅(R)、Ig(G)、藍(B) 三個顏色通道的變化以及它們相互之間的疊加來得到各種各樣的顏色。 RGB顏色 分量的值通常采用十進制數(shù)表示,而 Flash軟件中顏色值采用十六進制數(shù)表示。比如RGB(100,

19、255, 10)等價于十六進制顏色碼#64FF0A,每個RGB顏色分量對 應(yīng)兩位十六進制數(shù)。顏色RGB十進制10025510十六進制64FF0A小杜編寫一個十六進制顏色碼轉(zhuǎn) RGB顏色值的轉(zhuǎn)換程序,程序功能如下:程序運行時在文本框Text1輸入一個十六進制顏色碼,輸入格式為: “#后面跟6位十 六進數(shù)(其中字母均為大寫)。單擊“轉(zhuǎn)換” 按鈕Command在標(biāo)簽Label1上輸 出對應(yīng)的RGB顏色值。程序運行界面如下圖所示。實現(xiàn)上述功能的VB程序如下,請回答下列問題:程序運行時,在文本框 Text1輸入“#C50913;則標(biāo)簽Label1上顯示的內(nèi)容是O(2)請在劃線處填入合適的代碼。Priva

20、te Sub Command1_Click()Dim s As String, ch As String, ans As StringDim i As Integer, j As IntegerDim a(1 To 3) As Integer分別用于存儲 RGB對應(yīng)的3個十進制分量s = Text1.Texts = Mid(s, 2, 6)For i = 1 To 3a(i) = 0Next iFor i = 1 To 6j = (i + 1) 2ch = Mid(s, i, 1)a(j) ;Next iFor i = 1 To 3ans = ans + Str(a(i)If i 3 Then

21、 ans = ans + ,”Next ians = RGB( + ans + ” )”Label2.Caption = ansEnd SubFunction HtoD(x As String) As Integer將一位十六進制數(shù)轉(zhuǎn)十進制數(shù)If x = 0 And x = 4 Thens1 :|Mid (s, i, 1) | (2)Elses1 = Mid(s, 1, i)End Ift = 0For j = 1 To Len(s1)t = t * 2 + Val(Mid(s1, j, 1)Next js3 =s3 + Mid (s2, t , 1)s3 =s3 + Mid (s2, t ,

22、 1)Loop Text2.Text = s3End Sub解析i表示字符串s中位置,從最后找到第一個位置為止。當(dāng)i大于等于4時,表示可以取出4位二進制數(shù),因此取出的字符個數(shù)為4,否則取出剩余的字符。在循環(huán)For j = 1 To Len(s1)中,是計算每組二進制對應(yīng)的十進制數(shù),再在s2中找到對應(yīng)的字符,并進行反向連接。答案 (1)i = 1 (2)Mid(s, i, 4) (3)Mid(s2, t+1 , 1) + s3【變式訓(xùn)練3】 在文本框Text1中輸入一組12位以內(nèi)的二進制數(shù),將該二進 制數(shù)轉(zhuǎn)化為十六進制數(shù)后在Label1中輸出。程序運行后如圖所示。o R。帆叫- ,-:*I mi

23、iiilni-MWM-hAjMiMAr iad程序運行時,將寬度調(diào)整為 5000,則需在 Form_Load()過程中加入語句處填,填字母:A.Text1.Caption = 5000 /B.Height= 5000 /C.Text1.Width=5000 /D.Text1.Left 5000)。實現(xiàn)上述功能的VB程序如下,請在劃線處填入合適代碼。Private Sub Command1_Click()Dim a(1 To 12) As Integer 數(shù)組用以存儲二進制數(shù)Dim b(1 To 3) As Integer 組用以存儲十六進制數(shù)Dim m, s As StringDim i, j

24、, k As Integerm = Text1.TextFor i = 12 To 12 Len(m) + 1 Step 1 將每位二進制數(shù)保存到數(shù)組a中mNext iFor i = 1 To 3 將每4位二進制數(shù)轉(zhuǎn)化為十進制數(shù)后保存到數(shù)組b中For j = 4 To 1 Step 1b(i) = b(i) + a( &) * 2 A (j 1)Next j Next i For i = 1 To 3If b(i) 10 Thenm = Chr(b(i) + 48) Elsem = Chr(b(i)+ 55) End If s = s + m Next i Label1.Caption = 轉(zhuǎn)

25、換后的十六進制數(shù)為:+ sEnd Sub若程序運行后,若在文本框中輸入二進制數(shù)1101101101,則變量s的值為O解析 先把二進制數(shù)m每一位數(shù)字存儲在數(shù)組a中,再從低位開始,每4位轉(zhuǎn)換 為一位十六進制數(shù)。答案(1)C (2)a(i) =Val(Mid(m, i, 1)i * 4 j + 1 (3) “36D獴時訓(xùn)練I河咔m1 .編寫“十六進制加法”程序。程序運行時,在文本框Text1和文本框Text2分 別輸入兩個十六進制數(shù),單擊“計算”按鈕后在文本框 Text3上輸出兩個十六進 制相加后的結(jié)果。程序運行如圖所示。).|12D(1)觀察代碼,觸發(fā)代碼執(zhí)行的事件名是 。實現(xiàn)上述功能的VB程序如

26、下,請在劃線處填入合適的代碼Private Sub Cmd1_Click()Dim a1 As String, a2 As String, sum As String, t As StringDim b1 As Integer, b2 As IntegerDim dist As Integer, x As Integer, jw As Integeral = Textl.Text: a2 = Text2.Text: sum =dist = Len(a1) Len(a2)If dist = A And Mid(a1, i, 1) = A” And Mid(a2, i, 1) = Fb2 = As

27、c(a2) 55Elseb2 = Val(Mid(a2, i, 1)End Ifx = b1 + b2 + jwjw = x 16If& Thensum = Chr(x Mod 16 + 55) + sumElsesum = Str(x Mod 16) + sumEnd IfNext iIf jw = 1 Then sum = 1 + sumText3.Text =sumText3.Text =sumEnd Sub(3)若將代碼If jw = 1 Then sum = 1 + sum刪除,則圖中Text3中顯示 的結(jié)果為。解析 dist表示字符 串長度的差值,當(dāng) distLen(a2),并且把

28、a2前面加0,使得長度一致。兩個十六進制相加時,應(yīng)從低位開始相加,jw表示是否有進位,如果除去進位后的數(shù),大于 10轉(zhuǎn)換成A-F,否則轉(zhuǎn)換成09的數(shù)字。答案 (1)Click (2)dist = -dist 或 dist = Abs(dist) Len(a1) To 1 Step 1 x Mod 16 = 10(3)2D.編寫VB程序,實現(xiàn)如下功能:在文本框Text1中輸入十進制整數(shù),文本框Text2 中輸入待轉(zhuǎn)換進制(范圍216),單擊“轉(zhuǎn)換”按鈕Command*在列表框List1 中輸出該整數(shù)對應(yīng)的進制結(jié)果,運行效果如圖 1所示。制ft. - Kirmi輸入避邪R:bimfii in輸入避

29、邪R:bi in hi no-(I in(!i(1)設(shè)計時,屬性窗口對象列表如圖2所示,則該程序共有 個對象為實現(xiàn)上述功能,請在劃線處填入合適的代碼。Private Sub Command1_Click()Const code = 0123456789ABCDEF”Dim s1 As String, s As String變量s存儲轉(zhuǎn)換后的結(jié)果Dim x As Long, R As Integer_mIf R = 2 And R 0 y = x Mod R x ;si = Mid(code, y + 1, 1)將余數(shù)轉(zhuǎn)換為對應(yīng)的字符 s =LoopListl.Addltem “( & Text

30、l.Text & ”)10“ & “ 一(“ & s & ”) & REnd If End Sub 答案 (1)6 (2)R = Val(Text2.Text) x = xJB( s1 + s.二進制轉(zhuǎn)十六進制,從文本框TextB輸入二進制整數(shù),單擊“轉(zhuǎn)換”按鈕,將二進制轉(zhuǎn)換為十六進制并顯示在文本框TextH中。程序界面如圖所示。轉(zhuǎn)換方法:先從右往左將二進制數(shù)分割成4位一組,若最左邊的一組不足4位,則用0將高位補足,然后將每4位二進制數(shù)轉(zhuǎn)換為1位十六進制數(shù)。a .爆履臥帙力 wwm- o xtftA品 I 10011 L10(H I出情力”;if例轉(zhuǎn)換心(1)觀察程序代碼,“轉(zhuǎn)換”按鈕的對象名

31、為 。(單選,填字母:A.TextB/TextH/ C. Command1/ D. Convert/ E.轉(zhuǎn)換)為實現(xiàn)上述功能,請在劃線處填入合適的代碼。Private Sub Convert_Click()Const zf = 0123456789ABCDEF”Dim a(1 To 100) As Integer, temp As IntegerDim s As String, res As String, n As Integer, r As Integerres = “: s = TextB.Text: n = Len(s)For i = 1 To na(i) = Val(Mid(s,

32、i, 1) Next in 4temp = 0For i = 1 To r 將最高的r位轉(zhuǎn)換為十六進制temp = temp * 2 + a(i)Next ires = Mid(zf, temp + 1,1)For i = 1 To t 將t組4位二進制轉(zhuǎn)換為十六進制temp = 0For j =1 To 4temp = temp * 2 +Next jres = res + Mid(zf, temp + 1,1)Next iTextH.Text = resEnd Sub若在文本框TextB中輸入“101000111;則單擊“轉(zhuǎn)換”按鈕后的輸出結(jié)果為:O解析 根據(jù)本程序的算法及代碼,將二進制字

33、符串里的字符逐個取出來,存儲到數(shù)組a,最高位存儲在a(1)。計算出這個二進制數(shù)按4位一組來分有完整的幾組,存儲在t變量,除去完整的t組4位的,剩下的r個位成一組,單獨轉(zhuǎn)成十六進 制,轉(zhuǎn)換時本程序中先計算出一組二進制對應(yīng)的十進制數(shù),然后到字符串zf中去取對應(yīng)的十六進制字符,需要注意如果計算出的十進制是 temp ,那么它在zf 中對應(yīng)的十六進制字符是 temp+1位置。答案 (1)D (2) r = n Mod 4 或 r =n t * 4a(j + r + 4 * (i - 1) (3)147.有趣的進制數(shù),編寫 VB程序找出符合條件的十進制自然數(shù),它的七進制與 九進制都是三位數(shù),且七進制與九

34、進制的三位數(shù)碼順序正好相反,輸出這個十進 制數(shù)與對應(yīng)的七進制和九進制數(shù)。程序運行界面如下圖所示。TTl-c X.*期里用景:24H物7的七道旗軌III鹿徜丸近制壯3、I實現(xiàn)上述功能的VB程序如下,請在劃線處填入合適的代碼Private Sub Command1_Click()Dim i As Integer, d As Integer, r As IntegerDim rs As String, ansi As Integer, ans2 As IntegerFor i = 81 To 342Do While d 0r = d Mod 9rs = Str(r) + rsLoopansi = V

35、al(rs)求出相應(yīng)的七進制數(shù),存儲在變量ans2中,代碼略If ansi Mod 10 = ans2 100 And ansi 100 = ans2 Mod 10 And ThenTexti.Text _ Text2.Text = Str(ansi)Text3.Text = Str(ans2)End IfNext iEnd Sub解析 利用變量d代替i進行進制的轉(zhuǎn)換,不會影響到i的值。將十進制數(shù)d轉(zhuǎn)換九進制,因此每次要除9。符合題目的要求,三個數(shù)字順序正好相反。答案 d = id=或者其它等價答案 ansi i0 Mod 10 = ans2 10 Mod 10 或者(ans1 mod 10)

36、 10 =(ans2 mod 10) 10 或者 mid(str(ans1), 2, 1) = mid(str(ans2), 2, 1)或者其它等價答案 str(i).在計算機系統(tǒng)中,數(shù)值一般用補碼來表示和存儲,補碼由符號位和數(shù)值位兩部分組成,符號位用0表示正數(shù),用1表示負(fù)數(shù)。例如,整數(shù)n(128= n=127) 用8位二進制補碼的表示方法為:符號位(1位)數(shù)值位(7位)第1位(最高位)第28位正數(shù):正整數(shù)補碼的數(shù)值即其二進制表示。 例:12的8位二進制表示00001100, 最高位即符號位 0”表示正數(shù)。負(fù)數(shù):除符號位外,所有位取反,然后+ 1。例:一5的8位二進制補碼表示方 法如下,5對應(yīng)

37、7位二進制數(shù)為0000101(原碼),所有位取反后為1111010僅碼), 再加1后為11110111卜碼),再設(shè)置符號位為1,因此5用8位二進制補碼表示 為11111011小明設(shè)計了一個 VB程序,點擊“補碼”按鈕 Command上將文本 框Text1中輸入的整數(shù)n(128= n = 0 ThenFor i = 8 To 2 Step - 1計算二進制原碼m(i) = n Mod 2n = n 2Next im(1) = 0Elsen 二 - nFor i = 8 To 2 Step 1計算二進制反碼m(i)n = n 2Next i i = 8 m(i) = m(i) + 1Do Whil

38、e m(i) = 2m(i) = 0i = i 1Loopm(1) = 1設(shè)置符號位End IfFor i = 1 To 8Text2.Text = Text2.Text & Trim(Str(m(i)Next iEnd Sub解析 28轉(zhuǎn)換成7位二進制是0011100,所有位取反1100011,再加1值為110010。設(shè)置符號位為1,結(jié)果為1100100=將二進制的最低位存儲在 m(8)中,m(2)為高位,m(1)是符號位。若某位為2時,該位為0,并向前進位。答案 (1)1100100 (2)(n + 1) Mod 2 或 1 n Mod 2 m(i 1) = m(i 1)+16.對輸入的明

39、文(由英文字母或數(shù)字組成的字符串)進行加密,輸出加密后得到的 密文。數(shù)據(jù)加密方法為對明文中的每個字符進行如下處理:1)將該字符ASCII碼轉(zhuǎn)換成對應(yīng)8位二進制;2)將對應(yīng)8位二進制數(shù)進行按位取反(1變0, 0變1);3)將產(chǎn)生的8位二進制數(shù)循環(huán)左移3次;4)最后產(chǎn)生的8位二進制數(shù)轉(zhuǎn)換成對應(yīng)的十六進制數(shù)。F5;在文例如,明文大寫字母”A通過上述算法加密算法加密后生成的密文是 本框Textl中輸入明文,單擊“生成密文”按鈕 Commandl,加密后生成的密文 顯示在文本框Text2F5;在文(1)如果輸入明文為大寫字母”F;則生成的密文是 。(2)請在劃線處填入合適的代碼。Function bto

40、h(m As String) As String將4位二進制數(shù)轉(zhuǎn)換成對應(yīng)的十六進制數(shù)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 iEnd FunctionPrivate Sub Command1_Click()Dim ans As String, s As String, ch As String, ret As StringDim i As Integer, asci As Integer, n

41、As IntegerFor 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 & retNext m ret = Mid(ret, 4, 5) + Mid(ret, 1,3) 完成加密步驟 3)和步驟 4) si = btoh(Mid(ret, 1,4)s2 = btoh(Mid(ret, 5, 4)ans = ans & si & s2 將第i個加密后的字符添加到變量 ans的末尾 Next iText2

42、.Text = ansEnd Sub解析 字母F的內(nèi)碼為01000110,按位取反得到10111001,循環(huán)左移3位得到11001101對應(yīng)十六進制數(shù)為CD。 btoh函數(shù)將4位二進制數(shù)轉(zhuǎn)換成對應(yīng)的十六進制數(shù),并通過函數(shù)名返回函數(shù)的值。答案 (1)CD (2) btoh = Mid(str, s +1,1) s = Text1.Text asc1 = asc12.字符加密:用VB編寫某字符串加密解密程序(僅針對ASCII碼字符),其加密 過程如下:首先,分別求出待加密 ASCII字符的ASCII碼,然后用7位二進制來 表示,比如“4的ASCII碼為十進制52,轉(zhuǎn)換為7位二進制為“0110100

43、其次, 從左至右依次記為第1、2、37位,分別把第3、4、5位取反,即0變1, 1 變0,至此“011010吸為“0101000將此二進制轉(zhuǎn)換為 ASCII碼為40,對應(yīng)的 字符為左括號”(:即”4經(jīng)過加密后得到加密字符左括號“(?!奔用芙鈳Ч鹦颍嚎谖浶?,、件施密字杵或櫛觥商?將:A R吟12 小網(wǎng)。W師密字符避解窠字符:|-閥 me啰堂,咻宜LT-在文本框Text1中輸入ASCII字符,單擊命令按鈕Command則在文本框Text2 中顯示經(jīng)過加密的字符。VB代碼如下,程序界面如圖所示。上述加密與解密過 程實際上是可以互逆的,請完成下列問題。請在劃線處填入合適的代碼。Private Sub

44、Command1_Click()Dim a(1 To 7) As IntegerDim i As Integer, j As Integer, n As IntegerDim asci As Integer, s As String, si As String i = 1 s = Textl.Text Text2.Text = ”Do While i = Len(Textl.Text)si = Mid(s, i, 1) asci = Asc(s1) n = 0For j = 7 To i Step iIf j =3 Or j = 4 Or j = 5 Then a(j) ;Else a(j)

45、= asci Mod 2 End If asci = asci 2 n =(2 Next j Text2.Text = Text2.Text +i = i + i Loop End Sub 解析 si表示每個待加密的字母,asci為Si的ASCII值,采用除2倒取余數(shù)(asciMod2)法,把各個位的值依次存放在數(shù)組 a中,當(dāng)j = 3 Or j =4 Or j = 5需 要取反,取反的方法是把該位加i后再Mod 2,計算各位后,還需轉(zhuǎn)化成十進制 數(shù),因此采用按權(quán)展開相加法,把計算的十進制值存放在變量n中,再到n轉(zhuǎn)換成相對應(yīng)的字母。答案 (asci Mod 2 + i) Mod 2 n + a

46、(j) * 2 A (7 j) Chr(n).在計算機中負(fù)數(shù)反碼的計算如下:給出十進制數(shù)x(- i27x0),將x的絕對值轉(zhuǎn)化為七位二進制數(shù),然后逐位取反,最左邊增加符號位i得到八位二進制數(shù)反碼。例如十進制數(shù)-7,將7轉(zhuǎn)換為七位二進制數(shù)為 0000111,逐位取反變 成1111000,最左邊增加符號位1得到八位二進制數(shù)反碼為 1111100Q小杜編寫 了一個反碼轉(zhuǎn)化程序,功能如下:在文本框Text1中輸入十進制負(fù)數(shù)x (127x0),單擊按鈕 Command1后,在標(biāo)簽 Label1上顯示其反碼。程序運行 界面如下圖所示:結(jié)合程序界面和程序代碼,沒有使用控件為(填數(shù)字:1. 2.0 畫 4.I

47、S結(jié)合程序界面和程序代碼,沒有使用控件為(填數(shù)字:1. 2.0 畫 4.IS)o實現(xiàn)上述功能的VB程序如下,請在劃線處填入合適的代碼。Private Sub Command1_Click()Dim n As Integer, t As IntegerDim r As Integer, c As Integer, s As String n = Val(Text1.Text)If n 0r = (t + 1) Mod 2t = t2c = c + 1LoopFor i = 1 To 8 cs = Str(1) + s十進制數(shù)”+ Str(n) + ”的二進制反碼為十進制數(shù)”+ Str(n) +

48、”的二進制反碼為Label1.Caption =ElseLabell.Caption = 輸入的數(shù)不符合要求!”End IfEnd Sub程序運行時,在文本框中輸入“27”,單擊“轉(zhuǎn)反碼”按鈕后,標(biāo)簽Labell 上顯示的內(nèi)容是為:十進制數(shù)一27的二進制反碼為 o解析 本題解題的關(guān)鍵在于理解求反碼流程,難點在 r =(t+1) mod作用是實現(xiàn)逐位取反。8 c表示前面0的個數(shù)。答案 (1)2 (2)t = n 或 t = Abs(n) s = Str(r) + s (3)111001009.卡普利加數(shù)又稱雷劈數(shù),指該數(shù)的平方拆分成兩部分,該數(shù)與這兩部分的和相 等。編寫VB程序,實現(xiàn)功能:在文本

49、框 Text1.Text輸入一個數(shù),單擊“判斷” 按鈕Command在標(biāo)簽Label2中顯示該數(shù)的平方,在標(biāo)簽 Label3中顯示結(jié)論。 程序運行的界面如下圖所示:&卡普利fll瞰D國7 3輸入數(shù) 口 誨教的平方是二恤U判斷I 卯* 1=的(1) “Private Sub Command1_Click() CliCk 是 伊選,填字母:A.屬性名/ B.事件名/ C.過程名)。實現(xiàn)上述功能的VB程序如下,請在劃線處填入合適的代碼。Private Sub Command1_Click()Dim x As Integer, i As Integer Dim y As Long, flag As Boolean x = Val(Te

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論