写一个函数的定义,isReverse

时间:2012-12-13 07:01:42

标签: c

写一个函数isReverse的定义,它的前两个参数是相等大小的整数数组,第三个参数是一个整数,表示每个数组的大小。当且仅当一个数组与另一个数组相反时,该函数返回true。 (“Reverse”在这里表示相同的元素,但顺序相反。)

int isReverse(int array1[], int array2[], int size)
{ 
    int i;
    for (i=0;i<size;i++)
    {
        if(array1[i] == array2[size-1])
            return 0;
        else
            return 1;
    }
}

我一直收到错误。什么是错的。

6 个答案:

答案 0 :(得分:5)

当你从函数中的任何块中return时,函数执行就会在那里结束,所以在你的情况下,即使数组的第一个元素匹配不正确,你也要从函数返回,你应该检查整个数组然后从函数返回到底,检查下面的代码:

int isReverse(int array1[], int array2[], int size)
{ 
    int i,status=1;

    for (i=0;i<size;i++) //Size is the length of the array? if yes than you need -1 from it.
    {
        if(array1[i] == array2[size])
        {
            status=0;
            --size;
        }
        else
            return 1;
    }

    return status;
}

此外,size-1不会改变变量大小本身的值,因此size将在整个循环中保持相同,使用--size这将减少实际变量的值,从而减少它每次一个。

答案 1 :(得分:1)

返回值是错误的,因为您只检查每个数组中的1个值,而不是所有数组。你想做的就是这样。

for (i=0;i<size;i++)
{
    if(!(array1[i] == array2[size-i])) 
       return 0;
}
return 1;

基本上你逐个遍历数组,如果任何一个值与另一个数组上的相应值不同,那么它不是反向的,所以我们返回0.如果我们退出for循环没有通过if,这意味着它们是反转的,所以我们返回1.

答案 2 :(得分:1)

变量“size”永远不会改变,所以你总是要检查array1的元素和array2的最后一个元素。

由于这听起来像是一个家庭作业问题,我会告诉你,你是否可以从那里出发。

答案 3 :(得分:1)

这就是我做到的。

    int isReverse(int array1[], int array2[], int SIZE)
    {
    for( int counter = 0; counter <= SIZE/2; counter++ )
    if(array1[counter] != array2[SIZE-counter] || array2[counter] != array1[SIZE-counter])
        return 1;
    return 0;
    }

您只是将索引i的值与常量SIZE-1进行比较。相反,你想比较i的值和比较数组的size-i。因此,每次计数器递增时,它与相反的数组的大小-i进行比较。你只需要为阵列的一半做这个。

答案 4 :(得分:0)

  int isReverse(int array1[], int array2[], int size)
  {
      int flag = 0;
      for (int i=0;i<size;i++)
      {
      if(array1[i] != array2[size-1]){
          flag = 1;
          break;
      }
      return flag;
      }
  }

在代码中,你将return语句保留在循环中...将return语句保留在循环之外并尝试

答案 5 :(得分:0)

int isReverse(int a[], int b[], int n)
{
int i = 0;
while (i<n)
{
if (a[i] != b[n-i-1]) {return 0; break;}
else i++;
}
return 1;
}

这是正确的答案。