C语言实验——合法的C标识符 (字符串)SDUT

C语言实验——合法的C标识符

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

给出一个标识符,请你判断它是否是C语言合法的标识符。

Input

输入一个标识符,长度不超过100。

Output

判断是否合法,如果是输出YES,否则输出NO。

Sample Input

123You

Sample Output

NO

Hint

C语言规定:标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。

 

此题我做出了两种方法

方法一:

#include
#include
#include
int main()
{
    int i, flag;
    char a[110];
    gets(a);
    flag = 1;//先假设该标识符合法
    for(i = 0; a[i] != '\0'; i++)
    {
        if(a[i] >= 'a' && a[i] <= 'z')
        {
        }
        else if(a[i] >= 'A' && a[i] <= 'Z')
        {
        }
        else if(a[i] >= '0' && a[i] <= '9')
        {
        }
        else if(a[i] == '_')
        {
        }
        else  flag = 0;
    }//如果标识符中存在不是字母或数字或下划线,则flag = 0
    if(a[0] >= '0' && a[0] <= '9')
    {
        flag = 0;
    }//判断第一个字符是否是数字,若为数字,则不合法,flag = 0
    if(flag)  printf("YES\n");
    else  printf("NO\n");
    return 0;
}

方法二:

#include
#include
#include
int main()
{
    int i, flag;
    char a[110];
    gets(a);
    flag = 1;//先假设该标识符合法
    for(i = 0; a[i] != '\0'; i++)
    {
        if(! (a[i] >= 'a' && a[i] <= 'z'))
        {
            if(! (a[i] >= 'A' && a[i] <= 'Z'))
            {
                if(! (a[i] >= '0' && a[i] <= '9'))
                {
                    if(! (a[i] == '_'))
                    {
                        flag = 0;
                        break;
                    }
                }
            }
        }
    }//如果标识符中存在不是字母或数字或下划线,则flag = 0
    if(flag == 1 && a[0] >= '0' && a[0] <= '9')
    {
        flag = 0;//如果标识符中只有字母,数字和下划线
    }//则判断第一个字符是否是数字,若为数字,则不合法,flag = 0
    if(flag)  printf("YES\n");
    else  printf("NO\n");
    return 0;
}

 

 

你可能感兴趣的:(SDUT,OJ,字符数组/字符串)