题目描述
输入一个字符串,判断其是否是C的合法标识符。
输入
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
输出
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
样例输入
3 12ajf fi8x_a ff ai_2
样例输出
no yes no
提示
C语言的标识符指保留字(for,int,if等)和用户定义的变量名。
C语言的标识符由字母、数字和下划线组成,其中第一个字符必须是字母或者下划线。
#include<stdio.h>
#include<string.h>
int main(){
int n,i,r;
char str[50];
while(scanf("%d",&n)!=EOF){
int k=1;
getchar();
for(r=0;r<n;r++){
gets(str);
if(str[0]!='_'){
if(str[0]<'a'||str[0]>'z'){
if(str[0]<'A'||str[0]>'Z'){
printf("no");
k=0;
}
}
}
if(k==1){
for(i=0;str[i]!='\0';i++){
if(str[i]!='_'){
if(str[i]<'a'||str[i]>'z'){
if(str[i]<'A'||str[i]>'Z'){
if(str[i]<'0'||str[i]>'9'){
printf("no");
k=0;
break;
}
}
}
}
}
}
if(k==1){
printf("yes");
}
printf("\n");
k=1;
}
}
return 0;
}
自我反思:难度不大,但细节很多,改了很多小细节才通过。