【问题标题】:Printing a matrix with the same amount of characters per element in C在C中打印每个元素具有相同数量字符的矩阵
【发布时间】:2020-06-23 06:34:47
【问题描述】:

我有这个代码来打印一个矩阵:

void imprimir_matriz (double matriz[][3]){
    for (unsigned short int i = 0; i < 3; i++){
        for (unsigned short int j = 0; j < 3; j++){
            printf ("|%lf", matriz[i][j]);
        }
        printf("|\n");
    }
}

但作为输出,我得到了这个:

|0.8000000|-0.6000000|-2.8000000|
|-0.6000000|0.2000000|0.6000000|
|-0.2000000|0.4000000|12.2000000|

但我真正想要的是让元素像“对齐”一样,像这样:

| 0.8000000  | -0.6000000 | -2.8000000 |
| -0.6000000 | 0.2000000  | 0.6000000  |
| -0.2000000 | 0.4000000  | 12.2000000 |

这不仅仅是添加额外空格的问题,因为数字的整数部分的位数可能会有所不同。 请问,我该怎么做?

【问题讨论】:

    标签: c matrix printing character spaces


    【解决方案1】:

    您可以像这样在格式字符串中指定宽度和精度:“% 6.2lf”,它为 6 个字符保留空间并将数字四舍五入到小数点后 2 位,空格表示“即使没有放置符号有空间”。 source

    【讨论】:

      【解决方案2】:

      我建议一个快速而肮脏的解决方案,即在数字后添加\t 字符,并以您的最大数字为基础。

      如果您真的希望它是动态的,您可以执行以下操作

      您还可以计算最大数字中的位数,方法是首先遍历矩阵并找到最大的数字,计算它的位数,然后以此为基础。

      要计算位数,您可以使用类似的东西;

      while (n != 0) {
          n /= 10;
          ++count;
      }
      

      希望这有帮助!

      【讨论】:

      • 虽然是双精度数,但数位数变得更加困难。
      • 是的,它有帮助,但我真的需要它是动态的,我知道有说明符,但不知道如何使用它们。还是谢谢!
      猜你喜欢
      • 1970-01-01
      • 2020-10-30
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多