如何将列设置为像这样垂直向下?

how to set column to straight down like this?

我试着做一个数字谜题,我想要一个像这样设置的列

\ ----- ----- ----- -----
|  10 |  1  |  6  |  7  |
\ ----- ----- ----- -----
|  4  |  14 |  3  |  9  |
\ ----- ----- ----- -----
|  2  |  11 |  5  |     |
\ ----- ----- ----- -----
|  15 |  8  |  12 |  13 |
\ ----- ----- ----- -----

我尝试使用此代码来做到这一点

    printf("\ ----- ----- ----- -----\n");
    printf("|  %2.1d |  %2.1d |  %2.1d |  %2.1d |\n",a[0][0],a[0][1],a[0][2],a[0][3]);
    printf("\ ----- ----- ----- -----\n");
    printf("|  %2.1d |  %2.1d |  %2.1d |  %2.1d |\n",a[1][0],a[1][1],a[1][2],a[1][3]);
    printf("\ ----- ----- ----- -----\n");
    printf("|  %2.1d |  %2.1d |  %2.1d |  %2.1d |\n",a[2][0],a[2][1],a[2][2],a[2][3]);
    printf("\ ----- ----- ----- -----\n");
    printf("|  %2.1d |  %2.1d |  %2.1d |  %2.1d |\n",a[3][0],a[3][1],a[3][2],a[3][3]);
    printf("\ ----- ----- ----- -----");

原来是这样

\ ----- ----- ----- -----
|   6 |  14 |  13 |  10 |
\ ----- ----- ----- -----
|   3 |   0 |   4 |   9 |
\ ----- ----- ----- -----
|   2 |   5 |  11 |   7 |
\ ----- ----- ----- -----
|   8 |  15 |  12 |   1 |
\ ----- ----- ----- -----

我该如何解决这个问题。它似乎只适用于 10-15。

来自 *printf 上的文档:

总的来说:

. followed by integer number or *, or neither that specifies precision of the conversion.

对于%d

Precision specifies the minimum number of digits to appear. The default precision is 1. If both the converted value and the precision are ​0​ the conversion results in no characters.

要使用的说明符是 "%-2.0d"%2.0d,具体取决于您希望数字左对齐还是右对齐。

#include <stdio.h>

int main(void) {
    printf("Left-justified:\n");
    printf("| %-2.0d |\n", 6);
    printf("| %-2.0d |\n", 11);
    printf("| %-2.0d |\n", 0);

    printf("Right-justified:\n");
    printf("| %2.0d |\n", 3);
    printf("| %2.0d |\n", 14);
    printf("| %2.0d |\n", 0);
}

输出:

Left-justified:
| 6  |
| 11 |
|    |
Right-justified:
|  3 |
| 14 |
|    |

关于精度说明符的注释:

If neither a number nor * is used, the precision is taken as zero.

这意味着 "%-2.d" 的形式也可以。