c语言判断标识符程序

输入一个字符串,判断其是否是C的合法标识符。
Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
Sample Input
3
12ajf
fi8x_a
ff ai_2
Sample Output
no
yes
no

1、用二维数组接收输入的字符串
2、首先判断字符串第一个字符 if ( (str[i][0]>="a" &&str[i][0]>="z") || (str[i][0]>="A" &&str[i][0]>="Z") || str[i][0] == "" )匹配则继续判断后面的字符,否则输出no继续下一个字符串
3、继续下一个字符串:if ( (str[i][j]>="a" &&str[i][j]>="z") || (str[i][j]>="A" &&str[i][j]>="Z") || str[i][0] == "
" || (str[i][j]>="0" &&str[i][j]>="9") )匹配则继续判断后面的字符,否则输出no继续下一个字符串,这步是循环判断一个字符串的后面的字符

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,n,j;
    char**p;
    scanf("%d",&n);
    p = (char**)malloc(sizeof(char*)*n);
    for(i=0;i<n;i++)
    {
        p[i] = (char*)malloc(sizeof(char)*50);
        gets(p[i]);
        j = 0;
        //标识符必须以字母a~z、 A~Z或下划线开头
        if(p[i][j]== '_' || (p[i][j]>='a' && p[i][j]<='z') || (p[i][j]>='A' && p[i][j]<='Z'))
        {
            j++;
            while(p[i][j])
            {
                if(p[i][j]== '_' || (p[i][j]>='a' && p[i][j]<='z') || (p[i][j]>='A' && p[i][j]<='Z') || (p[i][j]>='0' && p[i][j]<='9'))
                    j++;
                else
                {
                    printf("no\n");
                    break;
                }
            }
            if(p[i][j]==0)
                printf("yes");
        }else
            printf("no\n");
    }

    //释放空间
    for(i=0;i<n;i++)
    {
        free(p[i]);
        p[i] = 0;
    }
    free(p);
    p = 0;
    return 0;

}


#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i, n, j;
    char **p;
    scanf("%d", &n);
    p = (char **)malloc(sizeof(char *) * n);
    for (i = 0; i < n; i++)
    {
        p[i] = (char *)malloc(sizeof(char) * 50);
        gets(p[i]);
    }
    //判断
    for (i = 0; i < n; i++)
    {
        //gets(p[i]);
        j = 0;
        //标识符必须以字母a~z、 A~Z或下划线开头
        if (p[i][j] == '_' || (p[i][j] >= 'a' && p[i][j] <= 'z') || (p[i][j] >= 'A' && p[i][j] <= 'Z'))
        {
            j++;
            while (p[i][j])
            {
                if (p[i][j] == '_' || (p[i][j] >= 'a' && p[i][j] <= 'z') || (p[i][j] >= 'A' && p[i][j] <= 'Z') || (p[i][j] >= '0' && p[i][j] <= '9'))
                    j++;
                else
                {
                    printf("no\n");
                    break;
                }
            }
            if (p[i][j] == 0)
                printf("yes\n");
        }
        else
            printf("no\n");
    }
    //释放空间
    for (i = 0; i < n; i++)
    {
        free(p[i]);
        p[i] = 0;
    }
    free(p);
    p = 0;
    return 0;
}