#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n,sign,i,j;
char a[100];
scanf("%d", &n);
getchar();
while (n--)
{
sign=0;
gets(a); i=strlen(a);
if ((a[0]>='A' && a[0]<='Z') || (a[0]>='a' && a[0]<='z') || (a[0]=='_'))
{
for (j=1;j<=i-1;j++)
if ((a[j]>='a' && a[j]<='z') || (a[j]>='A' && a[j]<='Z') || (a[j]=='_') || (a[j]>='0' && a[j]<='9'))
sign=1;
else {sign=2; break;}
if (sign==1) printf("yes\n");
else if (sign==2) printf("no\n");
}
else
printf("no\n");
}
return 0;
}
中间WA改了好几处,最后debug才发现错误原因:数组元素从0开始,因此查找元素只能到字符串长度-1处
debug:F5设断点,F8调试
注意点:
1.n读取后,有一个空格需要getchar吃掉
2.scanf与gets差别。scanf遇到空格停止,gets可以读取空格、tab、回车