返回 课程

信奥AC之路-2级

0% 完成
0/0 步骤
  1. 第一课:字符
    5 主题|小节
  2. 第二课 嵌套循环与矩形图案(一)
    4 主题|小节
  3. 第三课 嵌套循环与矩形图案(二)
    3 主题|小节
  4. 第四课:矩形三
    5 主题|小节
  5. 第五课:字符矩形
    7 主题|小节
  6. 第六课:直角三角形
    6 主题|小节
  7. 第七课:倒三角形
    7 主题|小节
  8. 第八课:字符三角形
    8 主题|小节
  9. 第九课:字符倒三角形
    7 主题|小节
  10. 第十课:平行四边形
    6 主题|小节
  11. 第十一课:字符直角三角形
    5 主题|小节
  12. 第十二课:左斜三角形
    6 主题|小节
  13. 第十三课:等腰三角形
    6 主题|小节
  14. 第十四课:倒置等腰三角形
    7 主题|小节
  15. 第十五课:上下对称图形
    4 主题|小节
  16. 第十六课:复杂对称图形
    5 主题|小节
  17. 第十七课:左右对称图形
    5 主题|小节
  18. 第十八课:空心图形
    5 主题|小节
  19. 第十九课:空心图形
    3 主题|小节
  20. 第二十课:嵌套应用
    4 主题|小节
  21. 第二十一课:嵌套应用二
    4 主题|小节
  22. 第二十二课:嵌套应用三
    3 主题|小节
  23. 第二十三课:嵌套应用四
    3 主题|小节
课 1, 主题|小节 2
进行中

1.2 字符类型判断

2026年1月16日
课 进展
0% 完成

“在程序中,我们经常需要判断一个字符的类型,”我继续解释道,”比如判断它是数字、小写字母还是大写字母。由于字符在本质上是数字,我们可以使用比较运算符来进行这些判断。”

1.2.1 判断字符类型

题目描述:输入一个字符,判断它是数字字符、小写字母还是大写字母。

样例输入

a

样例输出

字母字符
小写字母

代码实现

#include <iostream>  // 包含输入输出流库
using namespace std;

int main() {
    char a;  // 定义一个字符变量a
    cin >> a;  // 从用户输入读取一个字符
    
    // 判断是否为数字字符('0'到'9'的ASCII码是48到57)
    if(a >= '0' && a <= '9') {
        cout << "数字字符";  // 如果是数字字符,则输出提示
    } 
    // 判断是否为字母字符(包括大小写字母)
    else if((a >= 'a' && a <= 'z') || (a >= 'A' && a <= 'Z')) {
        cout << "字母字符" << endl;  // 如果是字母字符,输出提示
        
        // 进一步判断是小写字母还是大写字母
        if(a >= 'a' && a <= 'z') {
            cout << "小写字母" << endl;  // 小写字母'a'到'z'的ASCII码是97到122
        } else {
            cout << "大写字母";  // 大写字母'A'到'Z'的ASCII码是65到90
        }
    }
    // 注意:如果输入的既不是数字也不是字母,程序不会输出任何内容
    
    return 0;  // 程序正常结束
}

思考

  • 使用比较运算符>=<=判断字符是否在特定范围内
  • 字符可以直接与字符进行比较,如a >= '0'
  • 使用逻辑运算符&&||组合多个条件

1.2.2 大小写字母转换

题目描述:输入一个字母,如果是大写字母则转换为小写,如果是小写字母则转换为大写。

样例输入

a

样例输出

A

代码实现

#include <iostream>  // 包含输入输出流库
#include <cctype>    // 包含字符处理函数,如isupper(), islower()等
using namespace std;

int main() {
    char ch;  // 定义一个字符变量ch
    cin >> ch;  // 从用户输入读取一个字符
    
    // 判断是否为大写字母(使用cctype库函数isupper)
    if(isupper(ch)) {  
        // 大写转小写:加上大小写字母ASCII差值('a'-'A'=32)
        cout << char(ch + ('a' - 'A'));  // 转为小写并输出
        
        // 也可以使用库函数:cout << (char)tolower(ch);
    } 
    // 判断是否为小写字母(使用cctype库函数islower)
    else if(islower(ch)) {  
        // 小写转大写:减去大小写字母ASCII差值('a'-'A'=32)
        cout << char(ch - ('a' - 'A'));  // 转为大写并输出
        
        // 也可以使用库函数:cout << (char)toupper(ch);
    }
    // 注意:如果输入的不是字母,程序不会输出任何内容
    
    return 0;  // 程序正常结束
}

思考

  • 大写字母和小写字母的ASCII码差值是固定的:’a’ – ‘A’ = 32
  • 可以通过加减这个差值来实现大小写转换
  • 使用isupper()islower()函数可以简化判断
  • 将计算结果转回字符类型输出