除了\t外,还能用<iomanip>头文件里的setw()函数来处理对齐输出。
本题主要考察输出流的控制。
setw() 函数
setw()
函数可以控制输出流的下一个输出内容的场宽。
以下是一个使用的例子。
当运行以下语句时:
int a=114514;
cout<<a;
输出结果将为:
114514
当包含了头文件<iomanip>
,并运行以下语句时:
int a=114514;
cout<<setw(10)<<114514; //设置场宽为10
输出结果将为:
114514
可见,当下一个输出的内容的宽度不足 setw()
函数中设置的参数时,输出流将自动在这个输出内容的前面添加字符(默认为空格)来补齐宽度。
当下一个输出的内容超过 setw()
函数中设置的参数时,将不会产生任何效果,例如:
int a=114514;
cout<<setw(1)<<a;
输出结果将为:
114514
需要特别注意, setw()
函数只会对下一个输出内容有效,对于多个输出内容,需要重新设置,例如:
int a=114,b=514;
cout<<setw(10)<<a<<" "<<b;
输出结果将为:
114 514
正确的使用方法为:
int a=114,b=514;
cout<<setw(10)<<a<<" "setw(10)<<b;
输出结果将为:
114 514
setfill() 函数
你还可以使用 setfill()
函数更改补齐宽度时使用的字符,例如:
int a=114514;
cout<<setfill('*')<<setw(10)<<a; //将补齐宽度时使用的字符设置为'*'
输出结果将为:
****114514
setfill()
函数将对设置之后输出流的所有内容有效,例如:
int a=114,b=514;
cout<<setfill('*')<<setw(10)<<a<<" "<<setw(10)<<b;
输出结果将为:
*******114 *******514
又例如:
int a=114,b=514;
cout<<setw(10)<<a<<" "<<setfill('*')<<setw(10)<<b;
输出结果将为:
114 *******514
本题完整AC代码
#include <iostream>
#include <iomanip>
using namespace std;
int a,b,c;
int main()
{
cin>>a>>b>>c;
cout<<setw(8)<<a<<" "<<setw(8)<<b<<" "<<setw(8)<<c<<endl;
return 0;
}