题目相关
【题目描述】
给定一个不包含空白符的字符串,请判断是否是C语言合法的标识符号(注:题目保证这些字符串一定不是C语言的保留字)。
C语言标识符要求:
- 非保留字;
- 只包含字母、数字及下划线(“_”)。
- 不以数字开头。
【输入】
一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于20。
【输出】
一行,如果它是C语言的合法标识符,则输出yes,否则输出no。
【输入样例】
RKPEGX9R;TWyYcp
【输出样例】
no
【来源】
http://ybt.ssoier.cn:8088/problem_show.php?pid=1134
分析
由于题目已保证字符串不是保留字,所以我们只需考虑条件2与条件3。条件3:不以数字开头容易判断。稍复杂的就是条件2的判断。此时可以考虑采用自带的函数进行处理。在头文件cctype中包含了一些可用的函数。
函数 | 作用 |
---|---|
isalnum | 检查字符c是十进制数还是大写还是小写字母 |
isalpha | 检查字符c是否是字母 |
islower | 检查字符是否为小写字母,检查c是否是小写字母 |
isupper | 检查字符是否为大写字母,检查参数c是否为大写字母。 |
代码实现
#include <iostream>
#include <cctype>
using namespace std;
int main()
{
char s[25]={0};
bool flag=true;
cin>>s;
if(s[0]>='0'&&s[0]<='9'){
flag=false;
}
for(int i=0;s[i]!=0;i++){
if(!isalnum(s[i])&&s[i]!='_'){
flag=false;
}
}
if(flag){
cout<<"yes";
}else{
cout<<"no";
}
return 0;
}