http://acm.hdu.edu.cn/showproblem.php?pid=2024
image.png
首先根据C语言对标识符的要求,判断字符串里是否为下划线,字母和数字组成进行判断,可以使用循环对字符串每个字符进行判断。
当字符属于字母,下划线或者数字,就继续循环,否则,便输出no并跳出循环。
完成代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[50];
int i;
int j;
scanf("%d",&j);
while(j--)
{
scanf("%s",a);
if(a[0]=='_'||(a[0]>='a'&&a[0]<='z')||(a[0]>='A'&&a[0]<='Z'))
{
for(i=1;a[i]!='\0';i++)
{
if(a[i]=='_'||(a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||(a[i]>='0'&&a[i]<='9'))
continue;
else
{
printf("no\n");
break;
}
}
if(a[i]=='\0')
printf("yes\n");
}
else
printf("no\n");
}
return 0;
}
在写第一个程序的时候,当输入的字符串都为字母时,循环就被迫中止,而当输入的字符串都为数字时,便不会出现上述情况,为此,我找到问题的所在,更改了循环的方式,问题得以解决。