返回 课程

信奥AC之路-3级

0% 完成
0/0 步骤
  1. 第一课:数组基础
    4 主题|小节
  2. 第二课:数组基础二
    6 主题|小节
  3. 第三课:数组基础三
    6 主题|小节
  4. 第四课:数组基础四
    7 主题|小节
  5. 第五课:数组基础五
    5 主题|小节
  6. 第六课:数组用于统计,去重,排序
    5 主题|小节
  7. 第七课:冒泡排序
    6 主题|小节
  8. 第八课:数组连续性元素
    6 主题|小节
  9. 第九课:数组综合一
    7 主题|小节
  10. 第十课:字符数组
    7 主题|小节
  11. 第十一课:字符数组基础应用
    5 主题|小节
  12. 第十二课:字符数组基础应用二
    6 主题|小节
  13. 第十三课:字符数组进阶
    6 主题|小节
  14. 第十四课:字符串进阶二
    6 主题|小节
  15. 第十五课:字符串(STL)
    9 主题|小节
  16. 第十六课:字符串基础
    6 主题|小节
  17. 第十七课:字符串函数
    6 主题|小节
  18. 第十八课:字符串函数二
    4 主题|小节
  19. 第十九课:sort函数
    7 主题|小节
  20. 第二十课:字符串进阶
    7 主题|小节
  21. 第二十一课:字符串进阶二
    6 主题|小节
  22. 第二十二课:进制转换--十进制转其他进制
    5 主题|小节
  23. 第二十三课:进制转换--其他进制转十进制
    5 主题|小节
  24. 第二十四课:二进制,八进制,十六进制转换
    5 主题|小节
  25. 第二十五课:数据编码基础
    6 主题|小节
  26. 第二十六课:位运算基础
    6 主题|小节
课 11, 主题|小节 4
进行中

11.4 变量名合法性检查

2025年9月22日
课 进展
0% 完成

“在编程中,给变量起一个好名字非常重要,”我认真地说,”但是变量名必须遵循一定的规则才能被编译器接受。让我们学习如何判断一个变量名是否合法。”

11.4.1 合法的变量名

题目描述: 判断一个C++变量名是否合法。合法变量名的条件:

  1. 只能由字母、数字及下划线组成
  2. 不能以数字开头
  3. 不能是关键字:int、double、cout、cin

输入格式: 一行,包含一个字符串,长度不大于20。

输出格式: 如果是合法的变量名输出”yes”,否则输出”no”。

样例输入

sum

样例输出

yes

代码实现

#include <iostream>
#include <cstring>
using namespace std;

int main() {
    char a[30];                     // 定义字符数组
    cin.getline(a, 20);            // 读取变量名
    int len = strlen(a);           // 获取字符串长度
    bool valid = true;             // 合法性标记
    
    // 检查是否以数字开头
    if(a[0] >= '0' && a[0] <= '9') {
        valid = false;
    }
    
    // 检查是否为关键字
    if(len == 3 && a[0] == 'i' && a[1] == 'n' && a[2] == 't') {
        valid = false;  // int
    }
    if(len == 6 && strncmp(a, "double", 6) == 0) {
        valid = false;  // double
    }
    if(len == 3 && a[0] == 'c' && a[1] == 'i' && a[2] == 'n') {
        valid = false;  // cin
    }
    if(len == 4 && a[0] == 'c' && a[1] == 'o' && a[2] == 'u' && a[3] == 't') {
        valid = false;  // cout
    }
    
    // 检查字符组成
    for(int i = 0; i < len; i++) {
        if(!(a[i] >= '0' && a[i] <= '9') &&     // 不是数字
           !(a[i] >= 'a' && a[i] <= 'z') &&     // 不是小写字母
           !(a[i] >= 'A' && a[i] <= 'Z') &&     // 不是大写字母
           a[i] != '_') {                        // 不是下划线
            valid = false;
            break;
        }
    }
    
    if(valid) {
        cout << "yes";
    } else {
        cout << "no";
    }
    
    return 0;
}

算法解析

  1. 首先检查是否以数字开头
  2. 检查是否为预定义的关键字(int、double、cin、cout)
  3. 遍历每个字符,确保只包含字母、数字和下划线
  4. 所有条件都满足时,变量名才是合法的