【问题标题】:Printing a 2D matrix?打印二维矩阵?
【发布时间】:2018-11-15 21:31:29
【问题描述】:

你好,所以我不明白我的错误在哪里,我想逐行打印二维矩阵的内容:

void print_matrix(char s[], double m[], size_t rows, size_t cols)
{
printf("%s =\n", s);
    for (size_t i = 0; i < rows; i += 1)
    {
        for (size_t j = 0; j < cols; j += 1)
         {
            printf("%d ", m[i][j]);
         }
         printf("\n");
    }
}

I want it to be like this :
m1 =
1   2   3   4
5   6   7   8
9  10  11  12

它在这里给我一个错误:m[i][j] 但没有别的。感谢您帮助我是初学者

【问题讨论】:

  • 我建议买一本好书或教程并阅读一些数组基础知识。
  • double m[] - 看起来不像二维矩阵。
  • 我知道 python 和 C#,我一直都是这样做的,而且效果很好
  • C 既不是 Python 也不是 C#..
  • 您应该针对不同的问题提出新问题。但在此之前,我建议您查看 printf 的文档并阅读有关格式说明符的所有信息。

标签: c arrays matrix


【解决方案1】:

如果您希望能够让m 以可变大小维度的二维数组的形式存在,您可以使用 VLA 执行类似的操作。由于您在 for 循环的条件内声明变量,因此您的编译器应该符合 C99,因此您应该可以访问 VLA。*

void print_matrix(char s[], size_t rows, size_t cols, double m[rows][cols])
{
    printf("%s =\n", s);
    for (size_t i = 0; i < rows; i += 1)
    {
        for (size_t j = 0; j < cols; j += 1)
         {
            printf("%lf ", m[i][j]);
         }
         printf("\n");
    }
}

*脚注:虽然 VLA 是 C99 标准中的强制性内容,但 C11 标准退后一步,使其成为可选功能。

【讨论】:

    猜你喜欢
    • 2016-03-10
    • 2015-11-29
    • 2021-11-20
    • 2021-12-25
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多