top1编程
← 返回题目
题解

输出竖式

1 条题解

  • 0
    @ 2026-8-4 1:12:12

    解题思路

    这道题要求输出一道加法竖式:18 + 870 = 888。先观察输出格式,一共 4 行:

    18
     + 870
    ------
       888
    
    • 第 1 行是第一个加数 18;
    • 第 2 行是 + 870,注意开头有一个空格,加号前面也有一个空格;
    • 第 3 行是 6 个减号组成的横线,相当于竖式里的等号;
    • 第 4 行是结果 888,前面有 3 个空格。

    为什么是这个样子?因为这是竖式计算的规范写法:加号写在第二个加数的左边,两个加数的个位对齐,横线下面是结果。

    这类“照格式输出”的题,最难的其实不是计算,而是空格一个都不能错。数空格是最容易出错的地方,建议的做法是:先数好每行的空格数,在代码注释里标出来。比如第 4 行 888 前面有 3 个空格,这样才能让 888 的个位和上面 870 的个位大致对齐。

    这道题没有任何输入,输出的 4 行内容都是固定的,所以直接原样输出即可。18+870=888 可以先在草稿纸上算好写进代码,也可以让程序帮我们算——下面代码采用直接输出固定字符串的方式,最简单也最可靠。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        // 第1行:第一个加数18
        cout << "18" << endl;
        // 第2行:开头1个空格+加号+空格+第二个加数870
        cout << " + 870" << endl;
        // 第3行:6个减号组成的横线,表示等号
        cout << "------" << endl;
        // 第4行:开头3个空格+结果888,让个位对齐
        cout << "   888" << endl;
        return 0;
    }
    

    复杂度分析

    程序没有输入,只输出固定的 4 行文本,输出的内容量固定,不随任何数据变化。所以时间复杂度是 O(1),空间复杂度同样是 O(1)。

    这类“打印固定图案、固定竖式”的题,输出行数和每行的长度都是定死的,运行时间当然也是定死的,不受数据影响。

    • 1