HDU 2024 c语言合法标识符解题思路及一些疑惑

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2024

思路:C语言合法标识符要求第一位是字母或下划线,除第一位外,可以使字母、数字或下划线。

wrong answer code:


#include<stdio.h>
#include<string.h>
int check1(char* str)
{
    int i,len;
    len = strlen(str);
    if(!((str[0] <= 'z'&&str[0] >= 'a')||(str[0] <= 'Z'&&str[0] >= 'A')||str[0] == '_')) return 0;
    for(i = 1;i < len;i ++)
    {
        if(!((str[i] <= '9'&&str[i] >= '0')||(str[i] <= 'z'&&str[i] >= 'a')||(str[i] <= 'Z'&&str[i] >= 'A')||str[i] == '_')) return 0; return 0;
    }
    return 1;
}
int main(void)
{
    int cas;
    char str[50];

    scanf("%d",&cas);
    getchar();
    while(cas --)
    {
        gets(str);
        //getchar();
        if(check1(str))
            printf("yes");
        else
            printf("no");
        //puts(str);
        printf("
");
    }
    return 0;
}
 

ac code:

#include<stdio.h>
#include<string.h>
char str[50];
int check1()
{
    int i,len;
    len = strlen(str);
    if(!((str[0] <= 'z'&&str[0] >= 'a')||(str[0] <= 'Z'&&str[0] >= 'A')||str[0] == '_')) return 0;
    for(i = 1;i < len;i ++)
    {
        if(!((str[i] <= '9'&&str[i] >= '0')||(str[i] <= 'z'&&str[i] >= 'a')||(str[i] <= 'Z'&&str[i] >= 'A')||str[i] == '_'))
            return 0;
    }
    return 1;
}
int main(void)
{
    int cas;
    scanf("%d",&cas);
    getchar();
    while(cas --)
    {
        gets(str);
        if(check1())
            printf("yes");
        else
            printf("no");
        printf("
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/zhangjialu2015/p/5166112.html