1

我有两个整数数组,“a”和“b”。我想查找 a[0]、a[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);
}

但这似乎不起作用!

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

4

2 回答 2

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元素,则适用)并在找到的匹配数等于元素数时返回并返回除此以外。a1a0

于 2012-12-14T15:09:03.217 回答
3
else
{
    return 0;
}

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

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;
}
于 2012-12-14T15:13:39.257 回答