在c中找到另一个数组中的数组元素

时间:2012-12-14 15:07:57

标签: c arrays

我有两个整数数组,“a”和“b”。我想找到[0],[1]等是否也在b []内。我试过这个:

int emfanisi(int a[], int b[], int x){
   int i, j;
   for(i=0; i<x; i++)
   {
       for(j=0; j<x; j++)
       {
            if(a[i] = b[j])
            {
                return 1;
            }
            else
            {
                return 0;
            }
       }
   }
}

主要是我这样做:

for(i=0; i<2; i++){
   pos = 0;
   pos = emfanisi(a,b,2);
   if(pos = 1)
      printf("The %d number shows in the second array\n", i+1);
   else
      printf("The %d number doesnt show in the second array\n", i+1);
}

但这似乎不起作用!

有人可以指出我的错误吗?

2 个答案:

答案 0 :(得分:6)

这是作业

if(a[i] = b[j])

使用==进行相等性检查。注意将参数标记为const会产生编译器错误:

int emfanisi(const int a[], const int b[], const int x){

后来也有类似的错误:

if (pos = 1) /* Should be == */

请注意,您可以取消pos

if(emfanisi(a,b,2))

正如tafa指出的那样,当元素不相等时,不要退出,只有当它们相等时才会退出。


要确定a中是否包含b所有元素,那么您需要保留匹配的计数(i适合您找到break的元素时找不到a,如果找到的匹配数等于1中的元素数并返回a,则返回0否则。

答案 1 :(得分:3)

else
{
    return 0;
}

如果a和b的第一个元素不相等,这使emfanisi函数立即返回0。而是在完成for循环后放置那个return语句。

int emfanisi(int a[], int b[], int x){

    int i, j;

    for(i=0; i<x; i++)
    {
        for(j=0; j<x; j++)
        {
                if(a[i] == b[j])
                {
                    return 1;
                }
        }
    }
    return 0;
}