top1编程
← 返回题目
题解

输出大写字母

1 条题解

  • 0
    @ 2026-8-5 21:17:14

    P4359 输出大写字母(【入门】)

    解题思路

    字母在计算机里是字符,用 for 循环让字符变量从 'A' 一直加到 'Z'。每次 c++ 就会得到下一个字母,因为字符在内存里就是一个整数(ASCII 码),加 1 等于把编号加 1。倒序输出就从 'Z' 一直减到 'A'。

    题目要求每两个字母之间用一个空格隔开,而且行首行尾不能有多余空格。处理方法:先判断"我是不是第一个字母",如果不是第一个,就先输出一个空格再输出字母;如果是第一个,直接输出字母。

    if (c > 'A') cout << " ";
    

    第一行正序输出 A~Z,第二行倒序输出 Z~A,中间换行。

    边界情况:正序循环的结束条件是 c <= 'Z',不要写成 c < 'Z',否则会把 Z 漏掉;倒序循环 c >= 'A' 同样不能漏掉 A。本题没有输入,直接输出两行字母即可。

    参考代码

    // 正序输出A~Z,再倒序输出Z~A
    #include <iostream>
    using namespace std;
    
    int main() {
        // 第一行:A到Z
        for (char c = 'A'; c <= 'Z'; c++) {
            if (c > 'A') cout << " ";   // 不是第一个字母时先打空格
            cout << c;
        }
        cout << endl;
        // 第二行:Z到A
        for (char c = 'Z'; c >= 'A'; c--) {
            if (c < 'Z') cout << " ";   // 不是第一个字母时先打空格
            cout << c;
        }
        return 0;
    }
    

    复杂度分析

    两个循环各循环 26 次,一共 52 次输出,次数固定不变,所以时间复杂度是 O(1)O(1)。只用一个字符变量,额外空间复杂度也是 O(1)O(1)。

    • 1