这个数组值从哪里来?

亚历克斯·桑提斯特班

因此,我在重新开始上课之前正在练习编码,我想创建一个由10个整数组成的随机数组,并希望找到两个数字相加后等于大于100。

当我运行下面的代码

int arr[9];

for(int i = 0; i<=9; i++){
    arr[i]=(rand()%100)+1;
    cout<<arr[i]<<endl;
}

cout<<endl;

for(int k = 0; k<=9; k++){
    for (int j = k+1; j<=9; j++){
        if((arr[k]+arr[j])>100){
            cout<<arr[k]<<" + "<<arr[j]<<" "<<"over 100"<<endl;
        }
        else{
            cout<<arr[k]<<" + "<<arr[j]<<" "<<"under 100"<<endl;
        }
    }
}


return 0;

我注意到arr [9]的值等于一个数字,但是程序有另一个数字。例如:创建的数组是[42 68 35 1 70 25 79 59 63 65]

但我的输出显示为9的arr [9]

42 + 68超过100

42 + 35以下100

42 + 1以下100

42 + 70(超过100)

42 + 25以下100

42 + 79(超过100)

42 + 59(超过100)

42 + 63(超过100)

42 + 9以下100

(我将只包括第一个循环,不再赘述)

我的65去哪里了?

9是哪里来的?

我写错了吗?

谢谢

瓦卡尔

我注意到arr [9]的值等于一个数字,但是程序有另一个数字。

计算机计数的起点0和终点比总大小小一个数。对于int arr[9]

  • 第九个索引是 arr[8]
  • 第一个索引是 arr[0]
  • 第二个指标是 arr[1]

当您这样做时arr[9],您正在越界(访问不在范围内的元素),这将导致不确定的行为。

因此,您的循环应在i < 9以下位置停止

for(int i = 0; i < 9; i++) // i < 9 now vs i <=9

需要对第一个循环下方的循环进行相同的更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章