【问题标题】:C: How to read in multiple values using scanf in a matrixC:如何在矩阵中使用 scanf 读取多个值
【发布时间】:2017-02-19 10:42:31
【问题描述】:

您好,我正在尝试为用户输入矩阵大小和值编写代码。我对设置矩阵大小和值有所了解,但我想一次读取一行,这样我就不必在输入单个值后每次都按 enter。到目前为止,这是我的代码。谢谢。

int row, col, i, j;
int mat[10][10];

printf("Enter number of rows: ");
scanf("%d", &row);
printf("Enter number of columns: ");
scanf("%d", &col);

for (i = 0; i < row; ++i) {
    for (j = 0; j < col; ++j) {
        scanf("%d", &mat[i][j]);
    }
}
printf("\nHere is your matrix:\n");   
for (i = 0; i < row; i++) {  
    for (j = 0; j < col; j++) {  
        printf("%d\t", mat[i][j]);  
    }  
    printf("\n");  
}  

【问题讨论】:

  • 您可以使用空格分隔符输入。
  • 尝试给予例如1 2 3 4 5 作为输入单行..."%d" 格式和scanf 读取的内容实际上是空格分隔 十进制数。换行符是空格,普通空格也是。
  • 您也可以在 StackOverflow 上搜索 C 数组 scanf 用户输入 并提供 1000 个示例 :)
  • 哦,行得通。我从来没有这样想过。谢谢!
  • 为了在调试代码时减少输入,您还可以简单地创建一个包含值的文本文件并将其重定向为代码的输入(例如./yourprog &lt; yourdata.txt

标签: c matrix scanf


【解决方案1】:

我想一次读一行,这样就不用每次都按回车了

您列出的代码可以这样工作!这就是 scanf 的工作原理。

您可以在每个数字或每行按一次 Enter(您应该使用空格或制表符来分隔数字),甚至在您输入整个矩阵之后,试试吧!

【讨论】:

  • @sKrellish:你甚至可以在一行中输入3+3+1+2+3+4+5+6+7+8+9
【解决方案2】:

在C内存中是连续分配的

值将按行存储在数组中,因此使用空格而不是换行它将起作用

即使您在一行中键入所有元素,以空格分隔,它也会按行存储

所以如果 rows=3 col=3

i/p= 1 2 3 4 5 6 7 8 9 矩阵将是

1 2 3

4 5 6

7 8 9

【讨论】:

  • 您的解释无关紧要:循环中转换值的顺序完全由代码决定,而不是内存的布局方式。由scanf("%d", ...) 转换的值可以用任意数量的空白字符分隔:空格、制表符、换行符,甚至换页符和垂直制表符。 row、col 和所有矩阵值的值可以在一行上输入,也可以分布在多行上,没关系。
猜你喜欢
  • 2022-12-19
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多