题解
输出竖式
1 条题解
-
0
解题思路
这道题要我们按竖式的格式把 18 + 870 的竖式打印出来,答案要让程序先算出来再输出。
先自己口算:18 + 870 = 888。所以最终输出是这样:
18 + 870 ------ 888我们可以把问题拆成四行来做:
- 第一行:直接输出第一个加数 18。
- 第二行:先输出一个空格,再输出加号、空格和第二个加数 870,也就是 " + 870"。
- 第三行:输出 6 个减号组成的横线 "------",表示下面的横线。
- 第四行:输出结果。结果要和上面的竖式对齐,也就是 888 的个位要跟 870 的个位对齐。因为 888 是 3 位数,横线有 6 格,所以前面先补 3 个空格,再输出 888。
写程序的时候,把两个加数存进变量 a 和 b,再用 sum = a + b 把答案算出来。这样竖式里显示的是"算出来"的结果,而不是把 888 直接写死,更符合题目"???使用计算结果替换"的意思。
为什么第四行要空 3 格?因为 870 占 3 个字符,前面还有空格和加号,整行算下来是 6 个字符宽;888 也是 3 位,为了个位对齐,前面就要空出 6 - 3 = 3 个空格。对齐是竖式的灵魂,错一个空格看起来就不像竖式了。
要点:千万不要忘记换行!每一行输出完都要用 endl 换行,否则四行会挤成一长条,竖式就全乱套了。
参考代码
#include <iostream> using namespace std; int main() { int a = 18; // 竖式上面的加数 int b = 870; // 竖式下面的加数 int sum = a + b; // 先用加法算出答案:18 + 870 = 888 cout << a << endl; // 第一行:输出 18 cout << " + " << b << endl; // 第二行:空格 加号 空格 870 cout << "------" << endl; // 第三行:6 个减号组成的横线 // 第四行:答案 888 是 3 位数,前面补 3 个空格, // 让它的个位和上面 870 的个位对齐 cout << " " << sum << endl; return 0; }复杂度分析
没有输入数据,只有固定的四行输出。程序只做一次加法和几次输出,运算次数固定,所以时间复杂度和空间复杂度都是 O(1)。
- 1