我有一个矩阵,struct
有2个int
个变量。
struct virus {
int gen;
int neighbours;
}
我想用gen
值初始化我的完整1
矩阵。问题是它不适用于矩阵的第一列。
我将发布下面的代码。
此外,当我尝试将我的矩阵设置为virus struct
它没有工作时,我必须初始化一个我称为b
的新矩阵。
它只是一个简单的初始化和打印。
#include <stdio.h>
struct virus {
int gen;
int neighbours;
};
void initGen(int n, int a[][100])
{
struct virus b[n][100];
int i,j;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
b[i][j].gen = 1;
}
}
}
void printMatrixGen(int n, int b[][100])
{
struct virus a[n][100];
int i;
for(i = 0; i < n; i++)
{
int j;
for(j = 0; j < n; j++)
printf("%d\t", a[i][j].gen);
printf("\n");
}
}
int main(void)
{
int a[100][100], n;
n = 4;
initGen(n,a);
printMatrixGen(n,a);
return 0;
}
输出是矩阵
0 1 1 1
0 1 1 1
0 1 1 1
0 1 1 1
而不是
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
答案 0 :(得分:2)
您的代码传递了错误的数组。您需要更改功能签名,如下所示:
void initGen(int n, struct virus a[][100]);
void printMatrixGen(int n, struct virus a[][100]);
之后,删除struct virus b
数组的本地声明,并使用struct
作为参数传递。
最后,在struct
中声明您的main
数组,并将其传递给两个函数:
struct virus a[100][100];
int n = 4;
initGen(n, a);
printMatrixGen(n, a);