#include <stdio.h>
#include <string.h>
int main()
{
char a[51];
int i,t,n;
while(scanf("%d",&n)!=EOF)
{getchar();
while(n--)
{ t=0;
gets(a);
for(i=0;i<strlen(a);i++)
{
if(a[0]!='_'&&(a[i]<65||a[0]>122||(a[0]>90&&a[0]<97))) {printf("no
"); break;}
else if(a[i]<0||(a[i]>9&&a[i]<65)||(a[i]>90&&a[i]<97)||(a[i]>122)&&(a[i]!='_')) {printf("no
"); break;}
t++;
}
if(t==strlen(a)) printf("yes
");
}
}
return 0;
}
运行
连续输入ENTER键判断正确,而结果应该要错误,由于不知道如何确定a[i]是否为ENTER键的语句;
所以换了一种思维。
#include <stdio.h>
#include <string.h>
int main()
{
char a[51];
int i,t,n,k;
while(scanf("%d",&n)!=EOF)
{getchar();
while(n--)
{
gets(a);
if(a[0]>'0'&&a[0]<'9')
{
printf("no
");
break;
}
for(i=0;i<strlen(a);i++)
{
if((a[i]>='0'&&a[i]<='9')||(a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||(a[i]=='_'))
{
k=1;
}
else {k=0;break;}
}
if(k==0) printf("no
");
else printf("yes
");
}
}
return 0;
}
总结
1、首字符是字母或下划线 2、其余字符为字母或下划线或数字 3、若用scanf("%s",c);来读取字符数组,会读取不到空格; 4、此数据无需判断main等即可ac
5、
开头除了不能是数字外,还不可以是换行“Enter” 开头和结尾有空格应该没有问题的,但是我在自己的程序上是WA,但在这里是AC。 而且不用考虑main等关键字