数组入门:printf格式控制数字含义及该行代码作用疑问
关于这段printf语句的解释
1. 该行代码的作用
这行printf("%s%13s%17s\n", "Element", "Value", "Histogram");的核心作用是打印直方图的表头,为后续输出的数组元素索引、元素值、星号直方图这三列内容做对齐标记,让整个输出格式整齐、可读性更强。
2. %后面的数字是什么意思
%后面的数字是格式化输出的字段宽度,用来指定当前输出内容需要占据的字符总数:
- 如果输出内容本身的长度小于指定数字,会在内容左侧补空格(默认右对齐),凑够指定的字符数;
- 如果输出内容长度大于指定数字,会按内容实际长度输出,不会被截断。
结合你的代码具体拆解:
%s:直接打印字符串"Element"(长度7),未指定宽度,按实际长度输出;%13s:打印字符串"Value"(长度5),指定字段宽度为13,因此会在"Value"左侧补8个空格(13-5=8),让这个标题总共占13个字符宽度,和下面循环里打印元素值的%13d对应,保证每一行的元素值都和"Value"表头对齐;%17s:打印字符串"Histogram"(长度9),指定字段宽度为17,左侧补8个空格(17-9=8),占17个字符宽度,对应下面星号直方图的起始位置,让直方图和表头对齐。
另外,你代码循环部分的printf( "%7d%13d ", i, n[ i ]);也是同样逻辑:
%7d:打印数组索引i(整数),占7个字符宽度,和表头"Element"的长度匹配,保证索引列对齐;%13d:打印数组元素值n[i](整数),占13个字符宽度,和"Value"表头的字段宽度一致,让数值列对齐。
运行后输出的规整格式示例:
Element Value Histogram 0 19 ******************* 1 3 *** 2 15 *************** 3 7 ******* 4 11 *********** 5 9 ********* 6 13 ************* 7 5 ***** 8 17 ***************** 9 1 *
内容的提问来源于stack exchange,提问作者Dimitar Dimovski
相关产品推荐
相关产品推荐

