C语言使用printf打印数字谜题表格时列对齐异常如何修复
4×4方格打印对齐问题修复方案
问题根源
你使用的%2.1d是右对齐格式符,会在个位数左侧自动补1个空格,再加上格式串里|和格式符之间手动加的2个空格,最终个位数前面总共有3个空格,双位数前面只有2个空格,就会出现列偏移的情况。
修复方法
将所有%2.1d替换为左对齐格式符%-2d即可。左对齐格式符会在个位数右侧补空格,刚好匹配你需要的单元格格式:
- 双位数(如10):
%-2d输出为10,搭配固定空格后呈现为10,符合预期 - 个位数(如1):
%-2d输出为1,搭配固定空格后呈现为1,符合预期
修正后的打印代码如下:
printf("\\ ----- ----- ----- -----\n"); printf("| %-2d | %-2d | %-2d | %-2d |\n",a[0][0],a[0][1],a[0][2],a[0][3]); printf("\\ ----- ----- ----- -----\n"); printf("| %-2d | %-2d | %-2d | %-2d |\n",a[1][0],a[1][1],a[1][2],a[1][3]); printf("\\ ----- ----- ----- -----\n"); // 若需要支持空单元格,可针对约定的空标记做特殊处理,比如约定空值为-1时: printf("| %-2d | %-2d | %-2d | %s |\n",a[2][0],a[2][1],a[2][2], a[2][3]==-1 ? " " : &(char[]){'0'+a[2][3], ' ', '\0'}); printf("\\ ----- ----- ----- -----\n"); printf("| %-2d | %-2d | %-2d | %-2d |\n",a[3][0],a[3][1],a[3][2],a[3][3]); printf("\\ ----- ----- ----- -----");
内容的提问来源于stack exchange,提问作者KillingSpree
相关产品推荐
相关产品推荐

