阅读程序 · 答案 B①b1*2+b2其他等价表达式②i=i+4北 3
← 整套速查表 浙江高考信息技术 全部真题某种编码以4位二进制码为一组,每组前两位表示方向,后两位表示距离。编写一个程序,将编码翻译成方向和距离,距离值为每组编码后两位二进制码转换为十进制数的值。具体功能如下:在 文本框Text1中输入连续多组编码,单击“翻译”按钮Commandl,结果显示在列表框List1中。 程序运行界面如右图所示。  (1)要使程序运行时,文本框Text1的Width属性值为2018,可在Form_Load事件过程中添加语句________(单选,填字母:A. Width=2018 / B.Textl. Width = 2018 / C. Width. Textl=2018)。 (2)实现上述功能的VB程序如下,请在划线处填人合适的代码。
Private Sub Command1_Click()
Dim s As String, c As String, d As String
Dim n As Integer, bl As Integer, b2 As Integer, v As Integer, i As Integer
s = Textl.Text: n = Len(s): i = 1
Do While i <= n
c = Mid(s, i, 2)
If c = "00" Then
d = "东"
ElseIf c = "01" Then
d = "南"
ElseIf c = "10" Then
d = "西"
Else
d = "北"
End If
b1 = Val(Mid(s, i + 2, 1))
b2 = Val(Mid(s, i + 3, 1))
v= ①
List1.AddItem d + " " + Str(v)
②
Loop
End Sub(3)
(本题为阅读程序 / 完善程序,完整题目与测试数据见平台)
这题核心就是二进制转十进制,拿到题先想:每4位一组,前2位定方向,后2位算距离。距离怎么算?把后两位当成二进制数,用'高位×2+低位'的公式,或者用左移一位加低位,两种写法在VB里都能过。
学生最容易在两个地方栽跟头:一是把距离算成十进制直接拼接,比如把'01'当成1,把'10'当成10,结果列表框里跑出'北 10'这种离谱答案;二是把方向判断写反,把'10'当成'东',把'00'当成'西',导致整个输出全错。还有少数同学会忘记在循环里把i加4,结果越界或者死循环。
这题考查的是二进制转十进制的基本算法,以及VB里Mid函数取值和循环控制。命题人喜欢把进制转换藏在字符串处理里,让学生先读懂‘前两位方向、后两位距离’的规则,再写出正确的转换公式。考频上,二进制转十进制在浙江高考信息技术近年出现频率稳定,属于高频考点,往年多以填空或改错形式出现,今年改成了程序填空,难度适中但陷阱不少。趋势上看,未来可能继续结合数组或文件读写考进制转换,但核心公式不会变。
拿到题,第一步是理解规则:4位一组,前两位是方向(00东、01南、10西、11北),后两位是距离(二进制转十进制)。第二步是思考怎么算距离。二进制转十进制,整数部分就是‘按权展开’:高位×2+低位。比如'01',高位0×2+低位1=1;'10',高位1×2+低位0=2。在VB里,我们可以用两种写法:要么直接b1*2+b2,要么用左移运算b1<<1+b2(左移一位等于乘2)。两种都对,但题目给的空①后面没有运算符,所以填b1*2+b2最稳妥。这里有个易错点:别把b1和b2当成十进制数去拼接,一定要先转成数值再运算。
接下来看程序结构。Do While i <= n 是典型的逐组扫描,i从1开始,每次处理4个字符。c = Mid(s, i, 2) 取前两位判断方向,没问题。b1 = Val(Mid(s, i+2, 1)) 和 b2 = Val(Mid(s, i+3, 1)) 分别取出后两位的单个字符并转成数值,这一步也很关键:Val('0')=0,Val('1')=1,所以b1和b2就是二进制的高低位。然后①处填b1*2+b2,算出距离v。
算完距离后,列表框要加一行,List1.AddItem d + " " + Str(v) 没问题。但别忘了把i往后挪4位,否则下一轮还会处理同一组,导致重复输出。所以②处填i = i + 4。这里有个经典坑:有些同学会写成i = i + 2,结果每轮只跳两位,后面会错位,列表框里会出现'北 3 西 2'这种乱码。
最后看第(3)问:输入'1111',i=1时,c='11'对应方向'北',b1=Val('1')=1,b2=Val('1')=1,v=1*2+1=3,List1加'北 3',然后i=5,循环结束。所以列表框显示'北 3'。这里别把'11'当成11(十进制),也别把距离算成1(以为两个1就是1),记住二进制'11'就是3。
总结一下:这题看似简单,实则考的是对二进制权值的理解、VB字符串取子串和数值转换的熟练度,以及循环步长的控制。命题人爱在‘距离计算’和‘i的更新’两处挖坑,学生一定要记住:距离=高位×2+低位,i每次加4。考频上,二进制转十进制是浙江高考信息技术的高频考点,未来可能继续以程序填空或改错形式出现,但核心公式不会变。