C语言合法字符

99 阅读1分钟
     输入一个字符串,判断其是否是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<ctype.h>
int main()
{
    int n,d,i;
    char a[64];
    scanf("%d%*c",&n);
    while(n--)
    {
        gets(a);
        if(a[0]!='_'&&!isalpha(a[0]))
        {
           puts("no");
           continue;
        }
        for(d=i=1;a[i];i++)
        {
            if(!isalnum(a[i])&&a[i]!='_')
            {
                d=0;
                break;
            }
        }
        if(d==1)
        {
            printf("yes\n");
        }
        else
            printf("no\n");

    }
    return 0;
}

这道题主要是学习了调用ctype.h库来使用isalnum与isalpha函数来分别判断是否为数字或字母字符和判断是否为字母字符。 这次依然使用了%d%*c来跳过输入n所导致的输出no。

还有就是continue的使用和if条件的编写都是值得反复揣摩的!