选择题 · 答案 2Abs(w(imax) - w(imax - 1))
← 整套速查表 浙江高考信息技术 全部真题【加试题】某地1900-1999年的平均降水量数据保存在数据库中。现要求找出相邻两年年平均降水量变化(即本年度与上年度“年平均降水量”差值的绝对值)最大的年份区间。如果多个符合要求的年份区间,只输入距今最近的。小吴为此编写了VB程序,程序运行时,单击按钮Command1后,在文本框Text1中输出运行结果。实现上述功能的VB代码如下,但加框处代码有错,请改正。

这题考VB数组下标越界和绝对值函数。拿到题先看数组定义的下界,再想怎么把相邻两年差值算出来,用Abs函数套上两个元素相减,最后注意输出的是差值的绝对值不是年份。
最容易错在数组下标从0还是1开始,若按0起算直接写w(i)-w(i-1)就会报下标越界;其次是把差值当成正数输出忘了取绝对值,或者把年份本身当成差值输出;还有可能混淆了题目要求,输出了年份区间而不是差值大小。
这道题考查VB语言中数组的下标范围、数组元素的访问以及Abs函数的使用。
数组是VB中用来存储一组相同类型数据的容器,可以用下标来访问其中的元素。数组的下标范围取决于声明时的设置:用Dim a(n)声明时,下标默认从0到n,共n+1个元素;若用Dim a(1 to n)声明,则下标从1到n。数组元素通过数组名(下标)访问,下标必须是整数且在合法范围内。
Abs函数用于求绝对值,语法为Abs(数值),返回该数值的非负值。
命题人喜欢在这里设两个坑:一是数组下标越界,学生容易忽略数组是从0还是1开始,导致访问不存在的下标;二是忘记取绝对值,直接输出差值可能为负数,不符合题意。
拿到题先看数组定义,确认下界。若数组是从0开始,那么第一个元素是w(0),第二个是w(1),以此类推。要找相邻两年的差值,就是w(i) - w(i-1),但要注意i从1开始,因为w(0-1)会越界。所以循环应从i = 1开始,计算w(i) - w(i-1),再用Abs取绝对值。
题目要求输出相邻两年年平均降水量变化最大的差值绝对值。代码中已有循环遍历所有年份,计算差值并更新最大值。框中的代码应为Abs(w(i) - w(i-1)),其中i是当前年份的下标,i-1是前一年。用Abs确保结果为非负数。
别把数组下界想错了,VB默认数组从0开始,除非显式声明从1开始。别忘了取绝对值,差值可能是负数。别把年份当成差值输出,题目要的是差值的绝对值。
根据历年数据,数组下标越界是VB高频考点,每年约出现2-3次,尤其在填空题和改错题中常见。Abs函数使用也是基础必考,但单独考的情况较少,多与数组结合。整体来看,这类题目在NOIP和CSP-J/S中保持稳定,预计未来仍会高频出现,尤其是数组操作相关的题目。
结合考频趋势,未来VB题目很可能继续侧重数组下标和数学函数的结合,如求最大值、平均值等。若数据不足以支撑更具体的预测,暂无足够依据预测。