C++程序基础(5):C++顺序例题

例1:(信息奥赛一本通:1003)对齐输出

题目描述

读入三个整数,按每个整数占 8 8 8 个字符的宽度,右对齐输出它们,按照格式要求依次输出三个整数,之间以一个空格分开。

输入格式

只有一行,包含三个整数 a , b , c a,b,c a,b,c。整数之间以一个空格分开。

输出格式

只有一行,按照格式要求依次输出三个整数,之间以一个空格分开。

样例 #1

样例输入 #1

123456789 0 -1

样例输出 #1

123456789        0       -1

提示

对于 100 % 100 \% 100% 的数据, − 2 31 ≤ a , b , c < 2 31 -2^{31} \le a, b, c < 2^{31} 231a,b,c<231

这道题我们首先来看他的输入要求:输入三个小于2的31次方的整数。

那么,现在就有一个问题:2的31次方,要不要用到long long呢?

答案是不用的。因为2的31次方-1就=2147483647,是int范围的最大值。

那么输入程序就变得很简单了:

int a,b,c;
cin>>a>>b>>c;

之后我们来解决输出:

输出:按每个数占8个字符的宽度输出。

那就有一个问题:占8个字符的宽度,该怎么输出呢?

有的同学会想:直接在输出后面加几个空格不就行了吗?

可能就是这样的:

cout<<a<<"        "<<" "<<b<<"        "<<" "<<c<<"        ";

但是你们有没有想过:如果这个数不是一位数,并且不是第一个数怎么办呢?

就会形成这样的情况:

输出变成了

123456789        0        -1    

乍一看没啥问题对吧,但是一提交就会发现:屏幕截图_439_.png

爆40了。虽然部分得分也不错啊

但是这可是一道顺序题啊!!!再怎么说也是特别的简单好吧!!

咳咳回到题目,那究竟是为什么呢?

答案啊,就是因为如果这个数他不是一位数,这个程序也会在前面加上8个空格。这样它就变成了占8+n(n为数字位数)位了,与题目的要求不符。

那这该怎么改呢??(来自蒟蒻的伤感

这里啊,就需要用到一个神秘的函数——————setw()函数了。

这个函数可以控制输出的场宽,比如setw(5)就是把这个数占五个位置输出。

注意的是:此函数需要用到C++标准库:

#include <iomanip>

那经过两分半的改正,我们的代码就变成了这个样子:

cout<<setw(8)<<a<<" "<<setw(8)<<b<<" "<<setw(8)<<c<<endl;

现在的输出就变成了这样:

123456789        0       -1

乍一看也是和样例没啥区别,但是我们再提交试试&

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值