返回 课程
信奥AC之路-3级
0% 完成
0/0 步骤
-
第一课:数组基础4 主题|小节
-
第二课:数组基础二6 主题|小节
-
第三课:数组基础三6 主题|小节
-
第四课:数组基础四7 主题|小节
-
第五课:数组基础五5 主题|小节
-
第六课:数组用于统计,去重,排序5 主题|小节
-
第七课:冒泡排序6 主题|小节
-
第八课:数组连续性元素6 主题|小节
-
第九课:数组综合一7 主题|小节
-
第十课:字符数组7 主题|小节
-
第十一课:字符数组基础应用5 主题|小节
-
第十二课:字符数组基础应用二6 主题|小节
-
第十三课:字符数组进阶6 主题|小节
-
第十四课:字符串进阶二6 主题|小节
-
第十五课:字符串(STL)9 主题|小节
-
第十六课:字符串基础6 主题|小节
-
第十七课:字符串函数6 主题|小节
-
第十八课:字符串函数二4 主题|小节
-
第十九课:sort函数7 主题|小节
-
第二十课:字符串进阶7 主题|小节
-
第二十一课:字符串进阶二6 主题|小节
-
第二十二课:进制转换--十进制转其他进制5 主题|小节
-
第二十三课:进制转换--其他进制转十进制5 主题|小节
-
第二十四课:二进制,八进制,十六进制转换5 主题|小节
-
第二十五课:数据编码基础6 主题|小节
-
第二十六课:位运算基础6 主题|小节
课 进展
0% 完成
“在编程中,给变量起一个好名字非常重要,”我认真地说,”但是变量名必须遵循一定的规则才能被编译器接受。让我们学习如何判断一个变量名是否合法。”
11.4.1 合法的变量名
题目描述: 判断一个C++变量名是否合法。合法变量名的条件:
- 只能由字母、数字及下划线组成
- 不能以数字开头
- 不能是关键字: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;
}
算法解析:
- 首先检查是否以数字开头
- 检查是否为预定义的关键字(int、double、cin、cout)
- 遍历每个字符,确保只包含字母、数字和下划线
- 所有条件都满足时,变量名才是合法的