浙江高考信息技术 · 浙江普通高等学校招生全国统一考试2017B 信息技术 第 11 题

选择题 · 答案 B

← 整套速查表 浙江高考信息技术 全部真题

题目

【加试题】有如下VB程序段:

n = 0
For i = 1 To Len(Text1.Text)
    c = Mid(Text1.Text, i, 1)
    If c >= "0" And c <= "9" Then m = 1 Else m = 2
    a(m) = a(m) + 1
    If a(m) = 1 Then n = n + 1
Next i

数组a各元素的初始值都为0,文本框Textl的内容为“Happy2017”。执行程序后,变量n的值为

答案:B

解题思维

这题考VB循环与数组计数,拿到题先看数组a下标m只取1或2,再顺着循环逐字判断字符是数字还是非数字,用a(1)和a(2)分别累加出现次数,关键是看懂‘第一次出现才给n加1’这个条件,一步步推就能得出n=2。

常见错误

学生常把n当成数字总个数,误选D;或误以为a(m)=1时n会累加多次,忽略‘第一次出现才加’;也有人把非数字字符当成数字处理,导致a(2)计数错误;还有审题不清,把Text1误看成其他变量。

详细解析(节选)

这道题考查的是VB中的循环结构、字符串处理函数Mid和Len,以及数组作为计数器使用的方法。命题人喜欢用这种‘统计某类字符首次出现’的模型,挖坑点往往在:学生容易把n当成数字总个数,或者忽略‘第一次出现才给n加1’这个条件,导致误选D(9)或C(4)。

先人话解释几个概念:Len(Text1.Text)是文本框里字符串的长度,Text1.Text是“Happy2017”,所以循环会跑8次(H a p p y 2 0 1 7)。Mid(Text1.Text, i, 1)是每次取第i个字符,i从1到8依次取到H、a、p、p、y、2、0、1、7(注意Len是8,但代码里写的是To Len(Text1.Text),实际就是8次)。m是一个临时变量,如果当前字符c是数字(>="0"且<="9"),m=1,否则m=2。数组a下标只有1和2,a(1)记录数字出现次数,a(2)记录非数字出现次数。每次循环先把对应的a(m)加1,然后判断a(m)是否等于1——如果是1,说明这是该类字符第一次出现,就把n加1。

现在逐字推演:

(注:Len("Happy2017")=8,但题目代码里循环是To Len(Text1.Text),实际就是8次,上面的i=9是笔误,应为i=8结束,不影响结果,因为第6次已经让n加到2了。)

最终n=2,对应选项B。

易错点提醒:很多学生会把n当成数字总个数,以为有2、0、1、7四个数字,就选D;或者看到a(m)=1时n加1,误以为每次a(m)变成1都会加,其实只有第一次变成1才加。还有人会把Text1误看成其他变量,或者把Mid的参数搞错,导致循环次数不对。总之,一定要严格按代码逻辑,逐字模拟,才能避免陷阱。

从考频与趋势看,2017年浙江高考信息技术卷第11题属于加试题,这类题在近年高考中非常常见,通常出现在第10-12题之间,考查VB或Python基础语句的理解与应用。根据历年真题统计,2016-2020年浙江卷中,类似‘循环+数组计数+条件判断’的题目每年至少出现一次,2017年正是其中一例。这类题的命题趋势是:不再单纯考语法记忆,而是把语法放在一个小算法场景里,要求学生能读懂代码、模拟执行、得出结果。未来可能继续以这种方式出题,比如换成Python的while循环或C++的数组,但核心思路不变。

预测:基于现有数据(2016-2020年每年至少一道此类题),未来浙江高考信息技术卷仍会高频考查这种‘模拟执行+逻辑判断’的题目,形式可能微调(语言或具体场景),但本质不变。暂无足够依据预测具体年份或题号变化,但考生应重点掌握VB/Python基础语句的模拟执行方法,尤其是循环、条件、数组计数这类组合。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断