函数不断返回true,找不到错误吗?

时间:2018-11-18 12:04:27

标签: c++ arrays function loops

我需要编写一个函数,该函数将接受两个数组及其大小,然后比较单元格是否相等。 如果单元格相等,则如果不为假,则必须返回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;
}

4 个答案:

答案 0 :(得分:2)

  1. 您应该担心没有相等大小的数组,您可能想要 在这种情况下说错了
  2. 如果不使用函数的返回类型,请指定其返回值 输入为void
  3. 您可以在for循环中进行一次比较来处理它。
  4. 另一个大问题是将运算符<=与操作数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;
}