我有两个整数数组,“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);
}
但这似乎不起作用!
有人可以指出我的错误吗?
答案 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;
}