我正在尝试读取并打印c中的矩阵, 但它不能正常工作。
#include<stdio.h>
void main()
{
int l=0;
scanf("%d",&l);
int matrix[l-1][l-1];
for(int i=0;i<l;i++)
{
for(int j=0;j<l;j++)
{
scanf("%d",&matrix[i][j]);
}
}
printf("\n");
for(int i=0;i<l;i++)
{
for(int j=0;j<l;j++)
{
printf("%d ",matrix[i][j]);
}
printf("\n");
}
}
输入:
4
0 0 1 0
1 0 1 1
0 0 0 0
2 0 0 0
该程序显示输出:
0 0 1 1
1 0 1 0
0 0 0 2
2 0 0 0
答案 0 :(得分:3)
int matrix[l-1][l-1];
不正确。您需要指定数组大小,并且需要l
。然后,您获得索引0...l-1
,但大小为l
。
int matrix[l][l];
此外,即使这可能不是问题,也要检查scanf
的返回值,并在出错时执行某些操作,甚至只是中止。所以scanf
行可以是:
if(scanf("%d",&matrix[i][j]) != 1) {
printf("Input parse error for matrix[%d][%d]\n", i, j);
return;
}
阅读scanf
文档以了解其返回值。
答案 1 :(得分:0)
声明了变量int martix[l-1][l-1];
,但程序中使用了matrix
。
检查变量的拼写。