因此,我在重新开始上课之前正在练习编码,我想创建一个由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] 删除。
我来说两句