描述:
给定一个不包含空白符的字符串,请判断是否是C语言合法的标识符号(注:题目保证这些字符串一定不是C语言的保留字)。
C语言标识符要求:
1. 非保留字;
2. 只包含字母、数字及下划线(“_”)。
3. 不以数字开头。
输入:
一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于20。输出:
一行,如果它是C语言的合法标识符,则输出yes,否则输出no。
样例输入:
RKPEGX9R;TWyYcp样例输出:
no
本题思路不用多说,但是我们容易遗漏掉大写字母也能存在于合法标识符中,遇到这种遗漏的情况往往会究不出原因而很着急。
我采用的是立flag的方法,遇到不合法的标识符就flag赋值为0,最后根据flag的值确定输出yes或no。
AC正解
#include<stdio.h>
int main()
{
int i=0;
int flag;
char a[30];
gets(a);//接收字符串
while(a[i])
{
if(a[0]>='0'&&a[0]<='9')
{
flag=0;
break;//遇到不合法的标识符要及时结束循环,否则会被后来的合法flag覆盖
}
else if(a[i]>='A'&&a[i]<='Z'||a[i]>='a'&&a[i]<='z'||a[i]=='_'||a[i]>='0'&&a[i]<='9')//正确条件不要遗漏
flag=1;
else
{flag=0;break;}
i++;
}
if(flag==0) printf("no");
if(flag==1) printf("yes");
}