输出金字塔实现 * 左对齐、右对齐、居中对齐。你有什么办法吗,尝试着编写程序试一试吧。
温故知新
左对齐输出只需要按照图案正常输出就可以达到效果。
右对齐
右对齐用空格补位的方式输出,但这里我们使用一个新的函数 setw() ,它可以快速地设定输出的宽度。
* 齐刷刷地靠着最右边了,对得整整齐齐,有种向右看齐的架势。
划重点
在使用 setw() 函数之前,需要添加头文件 #include <iomanip> 。
setw(int n) :整数n表示字段宽度,它只对紧跟其后的输出内容有效。
当后面紧跟着的输出内容长度 小于n 的时候,在该内容前面会用空格补齐;当输出内容长度 大于n 的时候,内容会全部整体输出,并不会被截取。
居中对齐
升级挑战,如何确定 setw() 函数中的参数值。当我们希望 * 能够居中显示时,就需要排兵布阵了。
在这个输出中,我们不仅需要考虑 * ,还需要考虑 | 。
跟着我一起来排兵布阵。 setw() 函数中括号里的数字代表的不是空格的数量,而是整体长度,不够时使用空格补充。
对照阵列图,编写代码就轻松了。
挑战再度升级,运用 setw() 函数列竖式做计算吧!
列竖式做计算
遇到格式,我们都可以先排兵布阵,一个简单的草图会帮助我们更快速地确定具体数值。
● 第一排设置12的宽度。
● 第二排设置一个4的宽度和一个8的宽度。
● 第三排全是 - ,不需要设置,输入16个 - 。
● 第四排设置12的宽度。
运行程序,输出结果为:
输入第一个加数:2023 输入第二个加数:2022
巩固练习
(1)阅读以下代码,程序运行后的正确输出是( )。
A.
B.
C.
D.
(2)下面代码输出中会有几个空格?( )
int number = 2023; cout << setw(3) << number << endl;
A.4
B.3
C.2
D.0
(3)编写程序将案例 列竖式做计算 中的加法运算程序改成减法运算,并输出4321-1234的竖式。