HDU~2024
C语言合法标识符
Problem Description
输入一个字符串,判断其是否是C的合法标识符。
Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
Sample Input
3 12ajf fi8x_a ff ai_2
Sample Output
no yes no
代码:
#include<stdio.h>
int main()
{
int n,i,flag;
char str;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++){
flag=1;
while(scanf("%c",&str)&&str!='\n'){
if(flag&&!((str>='a'&&str<='z')||(str>='A'&&str<='Z')||str=='_')) {printf("no\n");break;}
//第一个字符不是字母或者下划线
if(!((str>='a'&&str<='z')||(str>='A'&&str<='Z')||str=='_'||(str>='0'&&str<='9')))
//字符不是字母或者下划线或者数字
{printf("no\n");break;}
flag=0;
}
if(str!='\n') while(scanf("%c",&str)&&str!='\n');//break跳出while,需读完这一行剩余字符
else printf("yes\n");//正常结束循环,说明是合法C标示符
}
return 0;
}
注:C的合法标示符是由字母、数字和下划线组成,但不能由数字开头的字符串。