如何比较C编程语言中的两个数组?

时间:2015-11-19 00:16:03

标签: c arrays

我想比较两个不同的int数组。一个数组是静态的,包含1到10的数字,第二个数组要求用户输入十个不同的数字,程序检查两个数组中的哪些元素相等。

#include <stdio.h>
int main(void) {

        int array1[] = {1,2,3,4,5,6,7,8,9,10};
        int array2[10];
        int i;

        for (i=0;i<11;i++) {

                printf("Enter numbers: ");
                scanf("%d", &array2);
        }

        for (i=0;i<11;i++) {

                if (array1[i] != array2[i]) {

                        printf("Not equal \n");
                }
                else {
                        printf("They are equal. \n");
                }
        }
}

即使我输入的数字等于存储在第一个数组中的数字,程序总是说不相等。

5 个答案:

答案 0 :(得分:3)

数组使用基于零的索引作为开始。您错误地填充了error: no commands supplied,因此您可能希望将第一个循环更改为以下

array2

因为您当前的代码只是将 for (i=0;i<10;i++) { printf("Enter numbers: "); scanf("%d", &array2[i]); } 的地址作为参数传递给array2

然后将第二个循环条件更改为

scanf
在比较循环中

,这样就不会访问数组边界之外的项目。

目前您的第二个循环是访问索引0到10的项目 - 但 for (i=0;i<10;i++) 中只有10个项目存在,因此您对当前代码的行为未定义。

答案 1 :(得分:1)

#include <stdio.h>
int main(void) {

        int array1[] = {1,2,3,4,5,6,7,8,9,10};
        int array2[10];
        int i;

        for (i=0;i<10;i++) { //fixed the range here

                printf("Enter numbers: ");
                scanf("%d", &array2[i]); //fixed the indexing
        }

        for (i=0;i<10;i++) { //fixed the range here

                if (array1[i] != array2[i]) {

                        printf("Not equal \n");
                }
                else {
                        printf("They are equal. \n");
                }
        }
}

答案 2 :(得分:1)

scanf("%d", &array2);

从输入中获取值时,您永远不会更新array2的索引。

尝试

scanf("%d", &array2[i]);

至于比较,您还可以使用memcmp来比较内存:

memcmp(array1, array2, sizeof(array1));

答案 3 :(得分:0)

我正在尝试回答这个问题,即使我是C程序的初学者。

根据您上面编写的程序,您正在输入并保存具有11个元素的int array2[10]值。

请记住,此数组的第一个元素的索引为零。例如:array2[0],直到它到达array2[10]的最后一个元素,你就算了11。

现在array1具有预先定义的值write,将与您的输入值进行比较。输入您的值并将其存储到array2[]

#include <stdio.h>

int main(void) {
    int array1[] = {1,2,3,4,5,6,7,8,9,10};
    int array2[10];
    int i;

    for (i=0;i<10;i++) { //fixed the range here
        printf("Enter numbers: ");
        scanf("%d", &array2[i]); //fixed the indexing

        if (array1[i] != array2[i]) {
            printf("Not equal \n");
        }
        else {
            printf("They are equal. \n");
        }
    }
}

答案 4 :(得分:0)

  

我是一个初学者,我有比较两个数组的想法。希望它可能对像我这样的人有所帮助。

/***compare two array: all elements are same or not(if not sorted 
 )***/
#include<stdio.h>

int main()
{
int n;
scanf("%d", &n);

int array1[n], array2[n];
int i, j;

for(i=0; i<n; i++)
{
    scanf("%d", &array1[i]);
}

for(i=0; i<n; i++)
{
    scanf("%d", &array2[i]);
}

int flg=0;
for(i = 0; i < n; i++)
{
    for(j=0; j<n; j++)
    {
        if(array1[i] == array2[j])
        {
            flg += 1;
            break;
        }
    }
}
if(flg == n)
{
    printf("All The Elements of array1 is present in array2... :)");
}
else
{
    printf("All THe Elements of array1 is not present in array2 :(");
}
return 0;

}