我有int 2-5个数组(用户决定多少),每个数组都有自己的元素,我需要比较它们才能打印出它们的名字。
例如,我有3个数组,第一个包含:3、41、315、2。第二个包含:5、31、315。第三个包含:315,41,3,2,2,41。我如何比较它们的元素,以打印具有相同元素的数组的名称,如下所示:(“第一个第三个”)。(它们可以按顺序排列或不按顺序排列,并且可以重复);**
我试着玩数组的索引,如果array 1 [0] == array 2 [0],然后比较其他元素,但这将需要一段时间来写这一切,它将占用大量的空间,也许有一个更干净的修复这一点?
#define N 6
int arr1[N] = { 3, 41, 315, 2 }, arr2[N] = { 5, 31, 315 }, arr3[N] = {315, 41, 3, 2, 2, 41};
for (int h = 0; h <= N; h++)
if (arr1[j] == arr2[h])
{
// compare other elements of arrays one by one adding indexes of arrays
}
}
我希望它输出:
第一次
2条答案
按热度按时间cvxl0en21#
性能不是很好,但是可以定义一个函数
contained_in
,检查一个数组中的所有内容是否都在另一个数组中。如果选中
contained_in(arrascii1, N, arrascii2, N)
* 和 *contained_in(arrascii2, N, arrascii1, N)
,则会知道两者包含相同的值。2skhul332#
与将数组
arr1
、arr2
和arr3
定义为单独的数组不同,定义数组的数组可能更容易,例如:这样,你就可以在循环中使用两个维度的索引,这将使编码更容易:
但是,这个程序没有输出,这是因为数组
arr1
的最后两个元素也包含值0
,而arr3
中不存在0
,所以arr1
和arr3
的比较失败。最后两个元素的值为
0
的原因是,如果数组中至少有一个元素被初始化,则所有未显式初始化的元素都被隐式初始化为0
。由于上述原因,为每个数组增加一个变量是合适的,该变量指定数组中有效元素的数量。与其使用单独的变量,不如将它们与数组一起分组在
struct
中:这样,您就可以将循环限制为有效元素的数量:
此程序具有以下输出:
这是你说你想要的输出。