【发布时间】:2018-01-27 04:36:32
【问题描述】:
我有一个程序,我想在矩阵 nxn 中仅在主对角线处填充零,而在其他任何地方填充 1。但是,我遇到了两个主要问题: 1)我不知道如何正确传递二维数组,以及如何调用函数。 2) 如果我在 main() 方法中编写所有代码(不包含函数),程序会编译但不能按预期工作 - 它会用 1 填充矩阵。
我想问我该如何解决这些问题?
#include <iostream>
#define MAX 100
using namespace std;
int a[MAX][MAX];
void fillMatrix(unsigned a[][MAX],unsigned n)
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(i==j)
{
a[i][j]=0;
}
a[i][j]=1;
}
}
}
int n;
int main()
{
cin>>n;
fillMatrix(a[][n], n);
//Print the matrix
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
cout<<a[i][j]<<' ';
}
cout<<endl;
}
return 0;
}
【问题讨论】:
-
你需要一个 else,在你的 if (i==j) 或 move a[i][j]=1; 之后在 if 语句之上。
-
具有相同名称的全局/局部变量?非常糟糕的主意。
标签: c++ arrays function multidimensional-array