首页 > 解决方案 > 在c中读取和打印矩阵

问题描述

我正在尝试在 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

标签: cmatrix

解决方案


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文档以了解其返回值。


推荐阅读