我试着做一个数字拼图,我想要一个列来设置如下
\ ----- ----- ----- -----
| 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。
发布于 2021-09-10 06:06:29
来自关于*printf的文档
一般而言:
。后面跟着整数或*,或者两者都不指定转换的精度。
对于%d
精度指定要显示的最小位数。默认精度为1。如果转换值和精度都为0,则转换结果不包含字符。
要使用的说明符要么是"%-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 |
| |关于精确说明符的说明:
如果既不使用数字也不使用*,则精度取为零。
这意味着"%-2.d"的形式也会起作用。
https://stackoverflow.com/questions/69127617
复制相似问题