【发布时间】:2019-10-13 13:05:24
【问题描述】:
这是我的代码:
#include <stdio.h>
/*
CALCULATING INVERSE OF A MATRIX
*/
int main(){
int matris[3][3];
int i = 0;
int j = 0;
for(i; i<3;i++){
for(j;j<3;j++){
scanf("%d", &matris[i][j]);
}
printf("%d", matris[i][j]);
}
}
我知道它的基本知识,但我遇到了麻烦,我的编译器是 Dev-C++,顺便说一下我的操作系统是 windows 10,当我运行这段代码并按下 1、2、3 时,这是我唯一的输出可以看到。
1
2
3
0430
--------------------------------
Process exited after 2.351 seconds with return value 1
我不知道我的错误在哪里,谢谢帮助
编辑
我将代码编辑为:
int main(){
int matris[3][3];
int i,j;
for(i = 0; i<3; i++){
for (j=0;j<3;j++){
scanf("%d", &matris);
}
}
for(i = 0; i<3; i++){
for (j=0;j<3;j++){
printf("%d ", matris);
}
}
}
但我仍然看不到正确的输出。
输出:
1
2
3
4
5
6
7
8
9
6487536 6487536 6487536 6487536 6487536 6487536 6487536 6487536 6487536
当然,预期的输出类似于 3x3 矩阵和整数 1 到 9
【问题讨论】:
-
您期望的输出是什么?
-
考虑在哪里打印值,在这种情况下
j是什么。 -
您访问的数组越界。在内部 for 循环
j为 3 之后,您正在打印matrix[i][3]。这就是所谓的未定义行为,可能会发生奇怪的事情。 -
在第一个内循环之后,
j == 3。你必须每次都重置它,比如for (j=0; ...。这就是forfor 的初始化部分。 -
另外,您使用 C 或 C++ 什么语言?它们是两种不同的语言,即没有
C/C++这样的语言。如果是 C++,为什么要使用非类型安全输入和输出例程(scanf和printf)而不是类型安全函数(cin、cout)?为什么用循环外的变量而不是for (int i = 0; ...);声明循环计数器?