c - 写一个函数的定义,isReverse

标签 c

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

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

我不断收到错误消息。这是怎么回事。

最佳答案

当您从函数中的任何 block 内返回时,函数执行将在那里结束,因此在您的情况下,即使数组的第一个元素匹配,您也会从函数返回,这是不正确的,你应该检查整个数组,然后最后从函数返回,检查下面的代码:

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 在整个循环中将保持不变,请使用 --size 这将减少实际变量的值,因此每次都会将其减一。

关于c - 写一个函数的定义,isReverse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13854673/

相关文章:

c - 通过 pthread 库的内存可见性?

c - 函数无限循环 - do/while 函数

if 条件到三元运算符的转换

c++ - 如何将 IronPython 嵌入到非 .NET 应用程序中?

c - 如何仅使用单个端口减少 UDP 套接字通信中的消息丢失?

c - 使用指针数组的选择排序

c - 为什么在第一个代码中它不起作用但在第二个代码中起作用? - 逆波兰表示法

c++ - 在 C 或 C++ 中不使用 header 进行编码有哪些客观原因?

递归函数上的 char * 数组操作

c - 在 C 可执行文件中动态包含文本