在“输入第二个数字:”的第二次迭代之后,程序崩溃。我不明白为什么;它应该仍然存在。
int arr1[3];
int arr2[3];
for(int i = 1; i < 6; i++)
{
if (i < 4)
{
cout << "enter number for first: ";
cin >> arr1[i];
}
else
{
cout << "enter number for second: ";
cin >> arr2[i-4];
}
}
答案 0 :(得分:2)
int arr1[3];
int arr2[3];
for(int i = 0; i < 6; i++)
{
if (i < 3)
{
cout << "enter number for first: ";
cin >> arr1[i];
}
else
{
cout << "enter number for second: ";
cin >> arr2[i-3];
}
}
尝试一下,因为数组从ZERO开始,arr [3] = 0,1,2
答案 1 :(得分:1)
对于i = 3,当此数组中的最高索引为2时,插入到arr1 [3]中(三个索引:0,1,2。
将代码中的每4个替换为3.最好对此值使用常量。
我相信你的代码还有另一件事:
for(int i = 1; i < 6; i++)
这个循环只运行5次迭代,从1到5.就像现在一样,你永远不会写入arr1的第一个索引。
从i = 0开始。
答案 2 :(得分:1)
让我们来看看你的程序如何适用于每个值
第一次迭代:
第二次迭代:
第三次迭代:
我会在这里停止分析,因为这是你的错误部分,从现在起你应该没事。
哦,你也应该开始阅读一本关于C ++的书,因为你在旅程开始时的失败将会在以后变得更大。你缺乏语言基础知识
答案 3 :(得分:0)
数组是从0开始的索引,而不是从1开始,正如您的代码似乎所假设的那样。 arr1
和arr2
中的有效位置因此为0,1和2.
修改您的循环以从for(int i=0; i<6; ++i)
运行,更改循环条件以查找i<3
,然后将arr2
的索引更改为i-3
。< / p>
您的循环将按如下方式运行:
i=0: enter number for first, stored in arr1[0]
i=1: enter number for first, stored in arr1[1]
i=2: enter number for first, stored in arr1[2]
i=3: enter number for second, stored in arr2[0]
i=4: enter number for second, stored in arr2[1]
i=5: enter number for second, stored in arr2[2]