在C中使用数组时出错

时间:2015-11-09 21:28:30

标签: c arrays

int main() //task 10
{
    int num[9], i, counter = 0, minNum, maxNum = 0, sum = 0;
    for (i = 0; i <= 9; ++i)
    {
        scanf("%d", &num[i]);
        if (num[i] > maxNum)
        {
            maxNum = num[i];
            minNum = maxNum;
        }
        else if (num[i] < minNum)
            minNum = num[i];
        sum += num[i];
    }
    printf("minNum: %d, maxNum: %d\nThe average is:%d\n", minNum, maxNum, sum / 10);
    return 0;
}

尝试运行此程序时出现此错误: 运行时检查失败#2 - 围绕变量&#39;数字&#39;被腐败了。 我想知道我的阵列有什么问题。

2 个答案:

答案 0 :(得分:6)

使用下面的代码,您将读取数据越界

for (i = 0; i <= 9; ++i)

在这种情况下,您只能访问0到8之间的元素。更改为i < 9

PS。逻辑中可能存在其他缺陷(请查看一些评论)。这里的这个也很棘手

if (num[i] < minNum)

minNum未初始化,因此如果首先在循环中评估上述条件,则会因读取未初始化的变量而得到未定义的行为。

答案 1 :(得分:2)

编号中for循环中的<=9更改从零开始。请改用<9