c - 在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
解决方案
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
文档以了解其返回值。
推荐阅读
- networking - 通过同一区域的 2 VPS 的私有 IP 进行通信是否比通过其公共 IP 进行的通信更快?
- angular - 只让 bootstrap css 在一个模块中工作
- spring-boot - 在没有 ServletContext 类型的 bean 的情况下使用 DataJpaTest 进行测试
- ios - 使用背景图片截取屏幕截图 - iOS
- python - python try...除了处理来自用户输入的参数
- javascript - 为什么我不能在我的 JS 计算中添加一个以上的点
- java - 计算列高的范围
- qt - 在 Ubuntu 18.04.1 LTS 中安装 Qt 4.8.7
- node.js - 谁能解释是什么问题?
- mongodb - 即使未启用授权,MongoDB 授权错误