1

"a" と "b" の 2 つの int 配列があります。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に適しています) が見つかり、見つかった一致の数が要素の数と等しい場合は戻りますそれ以外は。breaka1a0

于 2012-12-14T15:09:03.217 に答える
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;
}
于 2012-12-14T15:13:39.257 に答える