【发布时间】:2017-07-26 14:55:12
【问题描述】:
我一周前开始学习 C++,来自 C。
我的输入格式如下:
7
13 -4 -10 4 9 7 -3
4
0 -2 -1 2
2
3 5
0
第一个数字给出第一个数组中元素的数量。一旦这个数字为零,我们就会停止扫描数组。
我想将这些数组扫描成数组数组如下:
[[13,-4,-10,4,9,7,-3] , [0,-2,-1,2] , [3,5]]
我知道如何在第一个数组中扫描:
int n;
int array1[MAXLENGTH];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> array1[i];
// scanf("%d", &array1[i]);
}
我卡在0 -2 -1 2,因为它从零开始。
如何在这些数组中扫描并在遇到最后一个零时停止?
【问题讨论】:
-
为什么在 0 时停止扫描?如果在 0 处停止扫描,为什么要询问元素的数量?无论如何,输入
0 -2 -1 2的期望行为是什么? -
使用
std::vector代替数组。std::vector可以动态增长,使用push_back()。 -
您的代码需要两个不同的阶段。读取数组长度,如果为 0 则停止。然后读取数组(没有特殊的 0 处理)。重复
-
你是将所有数据读入一个数组还是二维数组?
-
@user6005857:不,您不想将数据扫描到数组数组中。您想将数据扫描到
vector或vector。主要原因是每个数组的容量在编译时是未知的。要通过为数组动态分配内存来减少注入的缺陷,请使用std::vector。