如果你想编译它的那部分的代码如下.
基本上我必须将以下数据输入到程序中:
4 5
12 5 7 0 -3
9 11 2 5 4
0 -5 9 6 1
2 12 93 -15 0
5 3
7 1 31
0 0 5
-5 -3 2
9 41 11
0 13 31
Run Code Online (Sandbox Code Playgroud)
第一个4 5和5 3表示第一个和第二个矩阵的维度,而后面的数据是矩阵的数据.
问题是,当我复制并粘贴它时,它要求再输入一次,当我输入任何内容(比如说84)时,它可以完美地工作(输出明智),84似乎什么都不做.为什么要求这个额外的?
#include <stdio.h>
int main(int argc, char *argv[]) {
int rows1 = 1, columns1 = 1, rows2 = 1, columns2 = 1; // variables for number of rows and columns in each matrix
int i, j, k; // loop variables
// These will affect the loop's length
scanf("%d %d", &rows1, &columns1);
int matrix1[rows1][columns1];
for (i = 0; i < rows1; i++) {
for (j = 0; j < columns1; j++) {
scanf("%d ", &matrix1[i][j]);
}
}
scanf("%d %d", &rows2, &columns2);
int matrix2[rows2][columns2];
for (i = 0; i < rows2; i++) {
for (j = 0; j < columns2; j++) {
scanf("%d ", &matrix2[i][j]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
你的上一次扫描需要2件事
scanf("%d ", &matrix[i][j]);
// 112
Run Code Online (Sandbox Code Playgroud)
事物1是整数
事物2是空白的零或更多
如果你提供"31"(或"31"或"31 \n"),scanf它将需要更多的空格.一旦你提供"84",就知道空白已经结束并继续执行程序.
建议:从scanf转换说明符中删除所有空格:scanf("%d%d")很好!该"%d"转换指定数目前已删除空白.
更好的是,使用fgets()和解析数据sscanf()