You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:57:03