这主要是printf的输出格式问题。
printf的标准格式是:printf("格式说明字符",输出列表项);
其中格式说明字符形式为:% 格式字符串
格式字符串的一般形式:%[-][0][m][.n] 格式字符
% 表示格式说明的起始符号
- 表示输出项左对齐输出,省略则表示右对齐
0 表示空位填充0,省略则表示不填充
m 表示域宽,即对应的输出项在输出设备上所占的字符数
.n 输出浮点数时n指精度(小数位数),省略n则输出6位小数;输出字符串时,表示输出左起n个字符
因此printf("%3d",c)表示域宽为3,即输出3位;printf("%d",c)根据c的值确定位宽。
| %c | 单个字符 |
| %d | 十进制有符号整数 |
| %e | 指数形式的浮点数 |
| %f | 浮点数 |
| %g | 自动选择合适的表示法 |
| %p | 指针的值 |
| %s | 字符串 |
| %u | 十进制无符号整数 |
| %x, %X | 无符号以十六进制表示的整数 |
| 0% | 无符号以八进制表示的整数 |