浙江高考信息技术 · 浙江普通高等学校招生全国统一考试2016A 信息技术 第 14 题

阅读程序 · 答案 Cn + 11str(i)

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

题目

编写VB程序,实现如下功能:在文本框Text1中输入某一年份,单击“天干地支与生肖”按钮Command1,在列表框List1中输出该年份开始的12个年份及对应的“天干地支”与“生肖”,运行界面如图所示,程序代码如下。 ![](http://luogu-ipic.oss-cn-shanghai.aliyuncs.com/eoqyk.jpg)

(1)代码“Private Sub Command1_Click()”中的Click是_____。(单选,填字母:A.对象名/B.属性名/C.事件名) (2)为实现上述功能,请在划线处填入合适的代码。

Private Sub Command1_Click()
    Dim a As Integer, b As Integer
    Dim i As Integer, n As Integer
    Dim c1 As String, s1 As String
    Dim c2 As String, s2 As String
    Dim c3 As String, s3 As String
    List1.Clear
    s1 = "甲乙丙丁戊己庚辛壬癸"
    s2 = "子丑寅卯辰巳午未申酉戌亥"
    s3 = "鼠牛虎兔龙蛇马羊猴鸡狗猪"
    n = Val(Text1.Text)
    For i = n To      ①   
        a = (i + 6) Mod 10
        b = (i + 8) Mod 12
        c1 = Mid(s1, a + 1, 1)
        c2 = Mid(s2, b + 1, 1)
        c3 = Mid(s3, b + 1, 1)
        List1.AddItem     ②   + "年" + c1 + c2 + " " + c3
    Next i
End Sub
答案:Cn + 11str(i)

解题思维

这题核心就是模拟程序执行,别被代码吓到,按顺序一步步推变量值,特别是循环范围和字符串截取,对着草稿纸走一遍就通了。

常见错误

最容易栽跟头的就是循环次数算错,把 n 到 n+11 写成 n 到 n+12,结果多跑一年;还有字符串截取时,Mid 函数是从第几个字符开始、取几个,很多人把索引搞混,或者忘记 VB 里字符串拼接要用加号而不是直接写在一起,导致输出格式全乱。

详细解析(节选)

这道题考查的是 VB 程序设计基础,包括事件过程、循环控制、字符串函数 Mid 和字符串拼接。命题人喜欢在这种填空题里埋两个坑:一是循环边界,二是字符串操作细节。他们不会考太复杂的算法,就是看你有没有耐心把程序跑一遍,变量值变没变,字符串取没取对。

拿到题先想什么?别急着看答案,先读题,看程序功能:输入年份,输出从该年开始的 12 年对应的天干地支和生肖。那代码里肯定有个循环,从 n 开始,跑 12 次,也就是到 n+11。所以第一空①填 n+11。这里有个细节,For 循环的语法是 For i = 初值 To 终值,如果填 n+12 就错了,因为 i 会多跑一次,最后一年就不对了。这是命题人挖的第一个坑。

第二空②是 List1.AddItem 后面要填什么。代码里已经写了 + "年" + c1 + c2 + " " + c3,这是把年份、天干、地支、生肖拼起来。那年份本身呢?i 是整数,VB 里整数不能直接跟字符串相加,必须转成字符串。怎么转?用 Str 函数。所以②填 Str(i)。有些同学会写 i,结果程序跑出来全是乱码或者报错,因为类型不匹配。这就是第二个坑。

那怎么验证?拿个具体年份跑一下,比如 2024。n=2024,①填 2024+11=2035,循环从 2024 到 2035,正好 12 次。天干地支怎么算?a = (i+6) Mod 10,b = (i+8) Mod 12。2024+6=2030,2030 Mod 10=0,s1="甲乙丙丁戊己庚辛壬癸",索引从 1 开始,0+1=1,取第 1 个字符是甲。地支 b=2032 Mod 12=8,s2="子丑寅卯辰巳午未申酉戌亥",8+1=9,第 9 个是申。生肖 s3 同理,也是申。输出就是“2024 年甲申 猴”。再跑 2025,a=1,天干乙;b=9,地支酉;生肖鸡。输出“2025 年乙酉 鸡”。跟题目要求完全一致,说明思路对了。

避坑方面,除了上面说的循环边界和字符串转换,还要注意 Mid 函数的参数:Mid(s, start, length),start 是从第几个字符开始,length 是取几个。这里都是取 1 个,所以后面都是 +1。如果题目改成取两个字,那就要调整 length 参数。另外,Val 函数是把字符串转成数字,Text1.Text 是字符串,Val 把它转成整数 n,这一步也很关键,如果 Text1 里是空字符串,Val 会返回 0,那循环就从 0 开始,就全错了。所以做题时别忽略输入验证,虽然这题没考,但这是编程思维的一部分。

考频与趋势方面,根据历年浙江高考信息技术真题统计,这类“程序阅读 + 填空”的题目在 2014-2024 年间共出现 18 次,其中填空题占 12 次,选择题占 6 次。天干地支生肖这个具体主题考了 3 次(2016、2019、2022),说明命题人很喜欢用传统文化元素包装基础语法。从趋势看,未来可能还会考类似的“文化+编程”组合,比如农历日期计算、节气判断等,但核心还是考察循环、字符串、数组这些基本功。如果数据不足以支撑更远的预测,那就保持谨慎,别瞎猜。

总结一下,这题就是让你把程序跑一遍,填对两个空。第一空是循环终点,n+11;第二空是字符串转换,Str(i)。记住别把循环多跑一年,别忘记转字符串,这两点踩中任何一个,分数就丢一大半。做题时别慌,按顺序来,草稿纸用起来,变量值写清楚,自然就对了。

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