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