2012-12-14 45 views
1

我有兩個整數「a」和「b」數組。我想查找一個[0],a [1]等是否也在b []中。我曾經嘗試這樣做:在c中的另一個數組中找到一個數組的一個元素

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); 
} 

但這似乎並沒有工作!

有人能指出我的錯誤嗎?

回答

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

+0

這似乎不工作。 – dothedos

+0

@dothedos,與'pos'類似的問題更新。 – hmjd

3
else 
{ 
    return 0; 
} 

這使得emfanisi函數立即返回0,如果a和b的第一個元素不相等。而是在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; 
} 
+0

+1錯過了這個。 – hmjd

相關問題