Nim语言数组练习遇IndexDefect错误,求正确实现方案
Nim数组索引越界问题解决与练习实现
错误原因分析
你写的countup(0,100,10)会生成0、10、20……100这些数值,而array[10, int]的合法索引是0到9(Nim固定大小数组的索引从0开始,长度为10时最大索引是9)。当循环到i=10时,a[i]就会触发IndexDefect,因为10超出了数组的索引范围。
正确实现代码
# 创建可容纳10个整数的数组 var a: array[10, int] # 循环填充10、20……100 for i in 0..9: a[i] = (i + 1) * 10 # 打印奇数索引对应的元素(索引1、3、5、7、9,对应值20、40……100) echo "奇数索引元素:" for i in countup(1, 9, 2): echo a[i] # 将偶数索引元素乘以5 for i in countup(0, 8, 2): a[i] *= 5 # 打印修改后的数组 echo "\n修改后的数组:" echo a
代码说明
- 填充数组时,遍历索引0到9,每个索引
i对应的数值是(i+1)*10,刚好得到10到100的10个整十数。 - 奇数索引遍历用
countup(1,9,2),步长为2,直接命中所有奇数位置。 - 偶数索引遍历用
countup(0,8,2),修改后打印整个数组。
内容的提问来源于stack exchange,提问作者ElementalX
相关产品推荐
相关产品推荐

