比较使用不同功能的回文

时间:2017-10-27 14:17:59

标签: c++ function palindrome

我正在尝试调用这些函数,以便在数组是否为回文时打印出来。请告诉我我做错了什么;好像我没有正确地传递论据。如果我在帖子上犯了错误,请告诉我;我对这个网站很新。

这是输出的外观:

这就是我的输出:

这是我的代码:

#include <stdio.h>

void createReverseArray();
void printArray();
void compareArray();

int main()
{
    int MyArray1[] = {1, 2, 3, 2, 1};
    int MyArray2[] = {1, 2, 3, 4, 1};
    int MyArray3[] = {1, 2, 3, 3, 2, 1};
    int MyArray4[] = {1, 2, 3, 4, 2, 1};

    int n = 5, i, j, n, temp;

    createReverseArray(MyArray1[5]);
    createReverseArray(MyArray2[5]);
    createReverseArray(MyArray3[5]);
    createReverseArray(MyArray4[5]);

    compareArray(MyArray1[5]);
    compareArray(MyArray2[5]);
    compareArray(MyArray3[5]);
    compareArray(MyArray4[5]);

    printArray(MyArray1[5]);
    printArray(MyArray2[5]);
    printArray(MyArray3[5]);
    printArray(MyArray4[5]);
}

int createReverseArray(int &a[], int n)
{
    i = 0;
    j = n - 1;

    while(i<j) {
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;
        i++;
        j--;
    }

    return reverse = a[];
}

int compareArray(int &a[], int reverse)
{
    if(a[] == reverse) {
        printf("The array is a palindrome")
    }
    else {
        return 0;
    }

}


void printArray(&a[])
{
    printf("Array elements are:%d", a[]);
    compareArray(a[]);
}

1 个答案:

答案 0 :(得分:2)

由于我提供的代码存在大量不确定性,我不确定,但如果您的目标只是检测阵列是否是回文,那么它非常简单,可以在一个函数中完成:

bool isPalindrome(int[] list, int size)
{
    for(int k = 0; k < size / 2 - 1; k++)
        if(list[k] != list[size - k - 1])
            return false;
    return true;
}

这将迭代你的数组的一半,将它与下半部分进行比较并退出瞬间,一个值不等于它的镜像。

至于代码中的错误,我可能会指出一些更明显的错误,以供将来参考:

  1. 调用参数数量不正确的函数。 示例:createReverseArray(MyArray1[5])
  2. 调用传递整数代替数组作为参数。例: MyArray[5]MyArray的第六个位置的整数。
  3. 忽略范围并使用变量而不声明它们。示例:i中使用的jmain createReverseArray。这不行。
  4. 将整数与数组指针进行比较。示例:if(a[] == reverse)。无论你想要达到什么目的,这都不会给你带来有用的结果。
  5. 在前向声明和实施中声明不同的功能。示例:void createReverseArray();int createReverseArray(int &a[], int n)。您应该使用相同的参数声明它们并返回值,否则编译器将无法理解它们是相同的。
相关问题