首页 > 解决方案 > 如何正确地将值输入矩阵?

问题描述

我想将值输入矩阵,但由于某种原因我使用的代码“跳过”了值。要在 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 上。

标签: c

解决方案


格式字符串中的空格告诉 scanf() 匹配零个或多个空格字符,直到匹配失败。空格 (' ')、换行符 ('\n')、回车符 ('\r') 和制表符 ('\t') 属于空白字符。当格式字符串的末尾出现空格时,scanf() 将尝试匹配输入中的空白字符,直到找不到匹配项。但是,scanf() 只能在匹配失败或到达文件末尾时返回,因此scanf("%d ",&matrix[i][j])中 %d 之后的空格 是导致此错误的原因。删除空间,它将正常工作。


推荐阅读