我正在尝试调用这些函数,以便在数组是否为回文时打印出来。请告诉我我做错了什么;好像我没有正确地传递论据。如果我在帖子上犯了错误,请告诉我;我对这个网站很新。
这是输出的外观:
这就是我的输出:
这是我的代码:
#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[]);
}
答案 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;
}
这将迭代你的数组的一半,将它与下半部分进行比较并退出瞬间,一个值不等于它的镜像。
至于代码中的错误,我可能会指出一些更明显的错误,以供将来参考:
createReverseArray(MyArray1[5])
。MyArray[5]
是MyArray
的第六个位置的整数。i
中使用的j
和main
createReverseArray
。这不行。if(a[] == reverse)
。无论你想要达到什么目的,这都不会给你带来有用的结果。void createReverseArray();
和int createReverseArray(int &a[], int n)
。您应该使用相同的参数声明它们并返回值,否则编译器将无法理解它们是相同的。