【发布时间】:2019-10-25 19:05:37
【问题描述】:
我有两个大小为 3 的数组 array1 和大小为 2 的 array2。我希望从两个数组中形成一对每个项目。那就是;
int array1[] = {1, 2, 3};
int array2[] = {9, 4};
我希望达到的结果:
1 , 9
1 , 4
2 , 9
2 , 4
3 , 9
3 , 4
这是我尝试过的:
#include <iostream>
using namespace std;
int main(int argc, const char *argv[])
{
int array1[] = {1, 2, 3};
int array2[] = {9, 4};
int arrayOneSize = sizeof(array1);
int arrayTwoSize = sizeof(array2);
for (size_t i = 0; i < arrayOneSize; i++)
{
for (size_t j = 0; j < arrayTwoSize; j++)
{
cout << array1[i] << " , " << array2[j] << endl;
}
}
return 0;
}
但由于某种原因,我得到了一大堆奇怪的组合,例如:
1,9
1,4
1,1
1,2
1,3
1,1029505037
1,-531587312
...(真的很长,只是想把结果缩短一点)
0,-411331072
1,9
1,4
1,1
1,2
1,3
1,1029505037
1,-531587312
1,-411331072
对不起,菜鸟问题。我还是 C++ 的新手,所以我很乐意感谢任何帮助。还有为什么我得到不属于数组的数字?
提前致谢。
【问题讨论】:
-
int arrayOneSize = sizeof(array1);==>int arrayOneSize = sizeof(array1) / sizeof(*array1); -
sizeof不是元素的数量。 -
可能不是那么明显,但是这个问题非常相似,并且接受的答案显示了一个通用的解决方案,您也可以在这里应用stackoverflow.com/questions/13788114/cross-product-in-c
-
感谢您的快速回复