我想将值输入到矩阵中,但由于某种原因我使用的代码“跳过”值。要在 3 X 3(9 个值)的矩阵中输入值,我需要输入 10。
#include<stdio.h>
#include<stdlib.h>
int matrix[3][3];
int i,j /*indexes for loops*/
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) {
printf("Enter value for position [%d][%d]: ", i,j);
scanf("%d ",&matrix[i][j]);
}
}
这是我从终端得到的:
Enter a value for position [0][0]: 0
1
Enter a value for position [0][1]: 0
Enter a value for position [0][2]: 0
Enter a value for position [1][0]: 0
Enter a value for position [1][1]: 0
Enter a value for position [1][2]: 1
Enter a value for position [2][0]: 0
Enter a value for position [2][1]: 0
Enter a value for position [2][2]: 0
矩阵打印如下:
0 1 0
0 0 0
1 0 0
但我在接下来的计算中遇到了 0。
最佳答案
格式字符串中的空格告诉 scanf() 匹配零个或多个空白字符,直到匹配失败。空白字符包括空格 (' ')、换行符 ('\n')、回车符 ('\r') 和制表符 ('\t')。当格式字符串末尾出现空格时,scanf() 将尝试匹配输入中的空白字符,直到找不到匹配项。但是,scanf()只能在匹配失败或到达文件末尾时返回,因此,scanf("%d",&matrix[i][j])中%d后面的空格为此错误的原因。 去掉空格就可以正常工作了。
关于c - 如何正确地将值输入到矩阵中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55678054/