阅读程序 · 答案 n = Len(s)n = Len(Text1.Text)Mid(s,c + 1,1)加密字符i对应两个值0,2
← 整套速查表 浙江高考信息技术 全部真题【加试题】某数据加密方法描述如下: (1)以字节为单位进行加密处理; (2)将1个字节的8位二进制数分割成前4位与后4位两个二进制数; (3)分别将上述两个4位二进制数转换为十进制数; (4)将每个十进制数转换为1个加密字符,对应的“密码表”如下: 
小明按照上述方法,设计了一个字符串(仅包含ASCII字符)加密的VB程序,功能如下:单击“加密”按钮command1,程序依次将文本框Text1中每个字符的ASCII码值作为1个字节转换为两个加密字符,连接这些加密字符,最后在文本框Text2中输出加密结果。
 
实现上述功能的VB程序如下:
Private Sub Command1_Click( )
Dim n As Integer, s As String, i As Integer, ss As String
Dim a As Integer '存储加密前字符的ASCII码
Dim b1 As Integer, b2 As Integer '分别存储分割、转换后的两个十进制数
s = Text1.Text
①
For i = 1 To n
a = Asc(Mid(s, i, 1))
b1 = a \ 16
b2 = a Mod 16
ss = ss + Code2Char(b1) + Code2Char(b2)
Next i
Text2.Text = ss
End Sub
'十进制值转换为加密字符的函数
Function Code2Ch
(本题为阅读程序 / 完善程序,完整题目与测试数据见平台)拿到代码先扫一眼功能:把文本框里的每个字符ASCII拆成高4位和低4位,再查表转成两个字符。所以第一空肯定是求字符串长度;第二空是把十进制转成表里对应位置的字符,用Mid从表字符串里截取一位。
学生最容易在第一空写成n=Len(Text1.Text)却忘记题目里已经定义了s=Text1.Text,导致变量名不匹配;或者误以为要算字节数直接除以2。第二空常犯的错误是把c当成数组下标直接取s(c),VB里字符串下标从1开始,而且表字符串叫s,变量c是十进制值,必须用Mid(s,c+1,1)才对。还有人会混淆Code2Char返回的是字符还是数字,以为要再转换一次。
这道题考的是VB字符串操作与自定义函数的结合,核心是把ASCII码拆成高4位和低4位,再查表转成字符。命题人喜欢在这里挖坑:一是变量作用域,题目已经定义了s=Text1.Text,所以求长度必须用Len(s),不能用Len(Text1.Text),否则编译错误或逻辑混乱;二是字符串下标从1开始,表字符串s="ILilkeCHNpostcard",如果c=0对应第一个字符I,那Mid里必须用c+1,写成Mid(s,c+1,1)。这是高频考点,往年选择题里出现过类似陷阱。
先看第一空。程序逻辑是遍历s的每个字符,所以循环变量n必须是s的长度。代码里已经写了s=Text1.Text,因此①处填"n = Len(s)"即可。如果填"n = Len(Text1.Text)",虽然数值对,但违背了题目给定的变量定义,属于典型的‘变量名不匹配’错误,考试里这种细节扣分很狠。
再看第二空。Code2Char函数接收一个0~15的整数c,要返回表字符串里对应位置的字符。因为下标从1开始,c=0对应位置1,c=1对应位置2,所以位置应该是c+1。Mid函数三个参数分别是字符串、起始位置、长度,这里取一位,所以②处填"Mid(s,c + 1, 1)"。很多学生会写成"s[c]"或"Mid(s,c,1)",前者VB不支持数组式访问,后者会错位,导致加密结果全错。
加密过程本身不复杂:对每个字符,a=Asc(...)得到ASCII,b1=a\16是高4位,b2=a Mod 16是低4位,然后分别查表得到两个字符拼起来。这里要注意b1和b2的取值范围都是0~15,正好对应表里的0~15号字符,不会出现越界。表字符串顺序是ILilkeCHNpostcard,数字0对应I,1对应L,2对应i,3对应l,4对应k,5对应e,6对应C,7对应H,8对应N,9对应p,10对应o,11对应s,12对应t,13对应c,14对应a,15对应r,16对应d,17对应?但b1最大15,所以没问题。
考频方面,根据历年数据,‘自定义函数+字符串操作’这类题型在浙江高考信息技术中属于中等偏高频考点,近5年出现3次,其中2次为填空完善程序,1次为选择题。趋势上,命题人越来越喜欢把简单逻辑藏在变量定义和索引细节里,让学生‘眼高手低’——看懂了算法却栽在代码实现上。未来可能继续考类似‘已知ASCII范围,求查表函数’或‘给定加密表,求解密函数’,重点还是考察对VB字符串下标和Mid函数的掌握。
避坑总结:第一,永远先看题目有没有定义变量,别自作主张用另一个名字;第二,字符串下标从1开始,这是VB铁律,任何查表操作都要+1;第三,Mid函数三个参数顺序不能乱,长度是1取单字符;第四,加密前后位顺序别搞反,高4位在前,低4位在后,查表顺序也要对应。只要守住这几条,这类题基本稳拿分。