top1编程
← 返回题目
题解

输出一行字符

1 条题解

  • 0
    @ 2026-8-5 12:14:09

    解题思路

    我们要把两个字符交替着输出,一共输出 n 个字符。比如 n=8,两个字符是 @ 和 #,就输出 @#@#@#@#。

    可以这样想:把要输出的位置从 0 开始编号:

    • 位置 0、2、4、6……(偶数位置)输出第一个字符 @;
    • 位置 1、3、5、7……(奇数位置)输出第二个字符 #。

    怎么判断一个位置是奇数还是偶数呢?用取模运算:位置 % 2。如果等于 0,就是偶数;等于 1,就是奇数。

    题目要求把"交替输出"这件事写成一个函数 one(...),每次调用它输出一整行,这样主程序就很干净了。

    打个比方:就像排队报数,报"1"的小朋友举左手,报"2"的小朋友举右手,交替进行,一个接一个,整齐又好看!

    参考代码

    // P4604 输出一行字符:把两个字符交替输出,一共输出n个字符
    #include <iostream>
    using namespace std;
    
    // 自定义one函数:在一行里交替输出字符c1、c2,一共n个
    void one(char c1, char c2, int n) {
        for (int i = 0; i < n; i++) {
            if (i % 2 == 0) cout << c1;  // 第0、2、4...个字符输出c1
            else cout << c2;             // 第1、3、5...个字符输出c2
        }
        cout << endl;
    }
    
    int main() {
        int n;
        char c1, c2;
        cin >> n >> c1 >> c2;  // 输入总个数和两个字符
        one(c1, c2, n);
        return 0;
    }
    

    复杂度分析

    • 一共要输出 n 个字符,循环执行 n 次,所以时间复杂度是 O(n)。
    • 我们只用了几个简单的变量,空间复杂度是 O(1)。

    n 最大只有 100,输出100个字符对程序来说轻轻松松!

    • 1