我需要编写一个函数,该函数将接受两个数组及其大小,然后比较单元格是否相等。 如果单元格相等,则如果不为假,则必须返回true。 但是我似乎找不到我的错误,它一直返回true。
#include <iostream>
using namespace std;
bool XArray(int a[],int b[],int sizeofA,int sizeofB, bool& v)
{
for (int i = 0; i <= sizeofA && i <= sizeofB;i++)
{
if (a[i]==b[i])
{
return v;
continue;
}
else
{
v = false;
break;
}
}
return v;
}
int main()
{
bool x = true;
int a[3] = {1,2,3,};
int b[3] = {1,2,7};
XArray(a,b,3,3,x);
cout << x << endl;
return 0;
}
答案 0 :(得分:2)
void
。<=
与操作数sizeofA
一起使用。您应该使用运算符<
,否则将超出数组的范围,这可能会使程序崩溃。请研究以下代码。
void XArray(int a[],int b[],int sizeofA,int sizeofB, bool& v)
{
v= true;
if( sizeofA != sizeofB ){
v=false;
}
else{
for (int i = 0; i < sizeofA; i++){
if (a[i] != b[i]){
v= false;
break;
}
}
}
}
PS:我认为该函数应该返回bool
,并且不需要采用最后一个参数v。您可以尝试自己练习作为一个练习。>
答案 1 :(得分:1)
您应该尝试逐行调试代码。看来您是编码新手,这是解决问题时应注意的一点:
在将a [i]与b [i](a [i] == b [i])进行比较的情况下,您返回的是'v'。但是您在此块中什么也不做。因为您需要等待检查所有数组元素,然后才能返回值。
答案 2 :(得分:0)
您不应该返回if(a [i] == b [i])。找到第一个相等对后,函数将返回。而是遍历每对单元格,如果不相等则返回。遍历所有内容后,返回true。您可以检查尺寸是否相等。如果不是,那么您肯定知道数组不相等。您也不需要bool参考。
答案 3 :(得分:0)
也许您正在尝试这样做:
bool XArray(int a[],int b[],int sizeofA,int sizeofB, bool& v)
{
for (int i = 0; i < sizeofA && i < sizeofB; i++)
{
if (a[i]!=b[i]) return false;
}
return v;
}