top1编程
← 返回题目
题解

输出长方形

1 条题解

  • 0
    @ 2026-8-3 18:39:20

    解题思路

    这道题又是一道纯输出题:用 * 画一个长方形。看输出样例,一共 4 行,每行 7 个 *,就像 4 行 7 列的小星星方阵,每一行都一模一样。

    先想清楚怎么输出一行:输出 7 个星号可以一条 cout 语句搞定——把 7 个 * 连在一起写进双引号里,cout << "*******" << endl;,末尾的 endl 负责换行。

    一共有 4 行,那就把同样的语句按顺序写 4 遍。要点有两个:

    1. 每行星号之间没有空格,要紧紧挨在一起;
    2. 每行结尾都要换行,否则 4 行会连成一条 28 个星号的长线,就不是长方形了。

    顺便想一想:如果这个长方形要画 100 行,把语句复制 100 遍就太麻烦了,以后学到循环 for 用一条语句就能搞定。不过本题固定只有 4 行,直接写 4 条输出语句是最简单、最不容易错的做法。这就是“固定图案用直接输出”的思路。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        // 第1行:输出7个星号并换行
        cout << "*******" << endl;
        // 第2行:输出7个星号并换行
        cout << "*******" << endl;
        // 第3行:输出7个星号并换行
        cout << "*******" << endl;
        // 第4行:输出7个星号并换行
        cout << "*******" << endl;
        return 0;
    }
    

    复杂度分析

    程序没有输入,只输出固定的 4 行、共 28 个字符,输出的内容量是固定的,不随任何数据变化。所以时间复杂度是 O(1)。

    空间上只保存了 7 个星号组成的字符串常量,空间复杂度也是 O(1)。

    如果把它推广成 m 行 n 列的长方形,输出的字符总数是 m×n 个,时间复杂度就是 O(m×n);但本题固定 4 行 7 列,所以是 O(1)。

    • 1