先看题目
题目描述
读入三个整数,按每个整数占 88 个字符的宽度,右对齐输出它们,按照格式要求依次输出三个整数,之间以一个空格分开。
输入格式
只有一行,包含三个整数 a,b,ca,b,c。整数之间以一个空格分开。
输出格式
只有一行,按照格式要求依次输出三个整数,之间以一个空格分开。
输入输出样例
输入 #1复制
123456789 0 -1
输出 #1复制
123456789 0 -1
说明/提示
对于 100 \%100% 的数据,-2^{31} \le a, b, c < 2^{31}−231≤a,b,c<231。
C++ 题解
本题主要考察输出流的控制。
头文件 <iomanip>
中提供了许多用于控制输出流的函数,在使用以下内容介绍的函数前,需要包含 <iomanip>
头文件。
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;
}