题目:
代码:
#include<stdio.h>
int main()
{
char a[55];
int n,i,flag1,flag2;
scanf("%d",&n);
getchar();
while(n>0)
{
flag1=0;
flag2=0;
gets(a);
for(i=0;a[i]!='\0';i++)
{
if(((a[0]>='A'&&a[0]<='Z')||(a[0]>='a'&&a[0]<='z')||a[0]=='_'))
{
flag1=0;
}
else
{
flag1=1;
break;
}
if(i!=0)
{
if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z')||a[i]=='_'||(a[i]>='0'&&a[i]<='9'))
{
flag2=0;
}
else
{
flag2=1;
break;
}
}
}
if(flag1==1||flag2==1)
printf("no\n");
else
printf("yes\n");
n--;
}
return 0;
}
C语言合法标识符百科:
1. 所有标识符必须由一个字母(a~z或A~Z)或下划线(_)开头;
2. 标识符的其它部分可以用字母、下划线或数字(0~9)组成;
3. 大小写字母表示不同意义, 即代表不同的标识符,如cout和Cout;
在定义标识符时,虽然语法上允许用下划线开头,但是,我们最好避免定义用下划线开头的标识符,因为编译器常常定义一些下划线开头的标识符。
4:关键字是保留字,不能用来做标识符(如变量名),例如:int double; 是错误的,因为 double 是关键字,不能做变量名。使用关键字来做变量名是一种语法错误,不能通过编译!下表列出了 C 语言的所有关键字:
auto enum restrict unsigned
break extern return void
case float short volatile
char for signed while
const goto sizeof _Bool
continue if static _Complex
default inline struct _Imaginary
do int switch
double long typedef
else register union
注意getchar()的位置,作用是吃回车,但是在字符串循环中,注意不要放进循环里面!!!