【发布时间】:2021-01-25 19:19:47
【问题描述】:
我需要从一个 10 元素数组中创建两个 5 元素数组。我做了这样的代码
#include <iostream>
using namespace std;
int main() {
const int size1 = 10, size2 = 5;
int array[size1]{ 1,3,6,2,82,10,6,34,2,5 }, arb[size2]{}, arc[size2]{};
for (size_t i = 0; i < 5; i++)
{
arb[i] = array[i];
}
for (size_t i = 5; i < 9; i++) {
for (size_t e = 0; e < 4; e++)
{
arc[e] = array[i];
}
}
for (size_t i = 0; i < 5; i++)
{
cout << arb[i] << "\t";
}
cout << endl;
for (size_t i = 0; i < 5; i++)
{
cout << arc[i] << "\t";
}
}
但第二个数组给出“2 2 2 2 0”。我不知道如何解决这个问题。
【问题讨论】:
-
只是一个提示:对于这么简单的事情,你真的需要循环嵌套吗?
-
为什么要使用嵌套循环?对于外循环的每次迭代,外循环运行
9 - 5 = 4次,内循环运行4 - 0 = 4次。所以它会运行 16 次。 -
看起来您尝试使用嵌套循环来解释第二个数组的偏移量。您可以简单地使用类似于第一个循环的内容,但要包含到
array的偏移量。示例:arc[i] = array[i+5];。尽管如此,最好还是用成对的指针生成范围。 -
想知道你为什么定义
size2 = 5;并在这里使用它arb[size2]{}但不要在这里使用它for (size_t i = 0; i < 5; i++)。最好写for (size_t i = 0; i < size2; i++),其他循环也一样。