这题目感觉不是很严谨,如果是关键字的话也是不能作为合法标识符的,但是这个不用检测,就算要检测也会很费劲,还得用字符串匹配,而且还得知道一共都有哪些关键字,太麻烦了,所以出题人原意就是检查大小写字母数字和下划线就OK了。
1 #include <stdio.h> 2 #include <string.h> 3 int main(){ 4 int n; 5 int i; 6 int sign; 7 char str[10000]; 8 while(~scanf("%d",&n)){ 9 getchar(); 10 while(n--){ 11 sign=0; 12 gets(str); 13 if( (str[0]>='a'&&str[0]<='z')||(str[0]>='A'&&str[0]<='Z')||str[0]=='_' ){ 14 for(i=1;i<strlen(str);++i){ 15 if( (str[i]>='a'&&str[i]<='z')||(str[i]>='0'&&str[i]<='9')||(str[i]=='_') 16 ||(str[i]>='A'&&str[i]<='Z') 17 ){ 18 continue; 19 }else {printf("no ");sign=1;break;} 20 } 21 }else {printf("no ");continue;} 22 if(sign==0) printf("yes "); 23 } 24 } 25 return 0; 26 }