21/3/5
今天做一道洛谷上的题,wa了几个数据,但是找bug找不出来,寻遍大神才知道是输出的问题
题目要求中会有一个数据需要几个场宽这种要求,之前我只是认为,场宽嘛,不就是数据之间的空格数嘛+1嘛,其实不是(现在才意识到我是不是没救了
先搬运一波场宽的定义:
场宽指在输出时每个输出项所占的长度。若输出项的长度大于场宽则输出的结果是那个输出项不受场宽限制,后面的输出项仍然在其后输出。
我们常用的tab制表符就是一个常用的场宽为4的符号,也就是说,如果这个数小于四位,很好,正常输出,就像这样 HTML文本编辑器可能对tab不太友好显示不出来,可以自己去编译器上试一下
如果是4位数咋办?也在编译器中打一下吧。
可以看出,4位数的话,一个数会占两个制表符,也就是八个空格,场宽为8,五六七位数也是一样,8位数就会再多一个,以此类推。。。
好上面的不看也没关系
C++中在命名空间std中有一个场宽函数setw()(w可能是width的意思吧没有考证
用法:setw(int a),表示输出场宽为a
比如我们要输出数组a[n],场宽要求为3,就这样:
for(int i = 0; i < n; ++i) cout << setw(3) << a[i];