如何将列设置为像这样垂直向下?
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"
的形式也可以。
我试着做一个数字谜题,我想要一个像这样设置的列
\ ----- ----- ----- -----
| 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"
的形式也可以。