描述:

给定一个不包含空白符的字符串,请判断是否是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");
}

更多推荐

合法标识符(C语言)