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;
}