无法在函数 C++ 中打印二维数组
Posted
技术标签:
【中文标题】无法在函数 C++ 中打印二维数组【英文标题】:Cant print an 2d array in function c++ 【发布时间】:2020-11-29 11:10:25 【问题描述】:打印isSymmetric函数有问题,不知道如何正确打印。我在 google 中找不到解决方案。
#include <iostream>
#include <iomanip>
using namespace std;
const int MAX = 100;
void transpose(int mat[MAX][MAX], int tr[][MAX], int N)
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
tr[i][j] = mat[j][i];
bool isSymmetric(int mat[MAX][MAX], int N)
int tr[MAX][MAX];
transpose(mat, tr, N);
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
if (mat[i][j] != tr[i][j])
return false;
return true;
void main()
int matrix_size;
cout << "Enter rows and columns for quaratic matrix: ";
cin >> matrix_size;
//int* a = (int*)malloc(row * col * sizeof(int));
const int col = 99, row = 99;
int a[col][row];
srand((unsigned)time(NULL));
for (int i = 0; i < matrix_size; i++)
for (int j = 0; j < matrix_size; j++)
a[i][j] = 0 + rand() % (20 - 0 + 1);
cout << endl;
for (int i = 0; i < matrix_size; i++)
for (int j = 0; j < matrix_size; j++)
cout << setw(4) << a[i][j];
cout << endl;
//if (isSymmetric(a, matrix_size)) has a problem
if (isSymmetric(a, matrix_size))
cout << "Yes";
else
cout << "No";
我收到以下错误,但我不知道它的说法是什么 错误(活动)E0167 类型“int ()[99U]”的参数与类型“int ()[100]”的参数不兼容
【问题讨论】:
void main()
不是main
的有效签名。 main
必须声明为返回int
。如果您的编译器没有抱怨,请使用现代编译器。
【参考方案1】:
您的函数在其参数中需要int mat[MAX][MAX]
,其中MAX
是100。您将它们传递给int a[col][row]
,其中row
和col
是99。这会产生这个问题,因为具有100 个元素的数组不是与 99 个元素的数组相同...
【讨论】:
以上是关于无法在函数 C++ 中打印二维数组的主要内容,如果未能解决你的问题,请参考以下文章