您的位置:首页 > 编程语言 > C语言/C++

C语言合法标识符

2015-10-07 22:05 567 查看
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>
#include<string.h>
int main()
{
char a[1000];
int T;
scanf("%d",&T);
getchar();//起初没写这句话,一输入3就输出no,原来是因为在输出3之后 ,程序把回车当成了一个字符串,并输出了结果。 注意,scanf不吸收回车,gets会吸收回车!
while(T--)
{
memset(a,'\0',sizeof(a));
int flag=1;
//scanf("%s",a);用scanf输入字符串时,遇到空格就结束,后面的字符不算,所以这种情况下,第三个样例总是yes
gets(a);
int len;
len=strlen(a);
int i;
if((a[0]>='a'&&a[0]<='z')||(a[0]>='A'&&a[0]<='Z')||a[0]=='_')
{
for(i=0;i<len;i++)
{
if(a[i]==' '&&a[i+1]!=' ')
{
flag=0;
break;
}

else
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||a[i]=='_'||(a[i]>='0'&&a[i]<='9'))
continue;
else
flag=0;
}

}
if(flag)
printf("yes\n");
else
printf("no\n");
}
else
printf("no\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: