如何正确地将值输入矩阵?

时间:2019-04-14 17:24:51

标签: c

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

Matrix DOES打印如下:

0  1  0
0  0  0  
1  0  0

但我的下一个计算始终使用0。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

您的scanf中有一个空格。删除它可以解决问题。

#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]);
  }
}