oj 2024 C语言合法标识符

Problem Description
输入一个字符串,判断其是否是C的合法标识符。
 
Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
 
Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
 
Sample Input
3
12ajf
fi8x_a
ff ai_2
 
Sample Output
no
yes
no
 
AC代码:
#include<stdio.h>
#include<string.h>
int main()
{
    //只能由字母、数字、下划线组成,且数字不能做开头
    int n;
    char bsf[50];
    scanf("%d", &n);
    getchar();
    while(n--)
    {
        int flag = 0;
        gets(bsf);
        int len = strlen(bsf);
        if(bsf[0] >= '0' && bsf[0] <= '9')
        {
            printf("no\n");
            continue;
        }        
        for(int i = 0; i < len; i++)
        {
            if((bsf[i] >= '0' && bsf[i] <= '9' )|| (bsf[i] >= 'a' && bsf[i] <= 'z' )|| (bsf[i] >= 'A' && bsf[i] <= 'Z') || bsf[i] == '_' )
            {
                flag ++;
            }    
            else
            {
                printf("no\n");
                break;
            }
                
        }
        if(flag == len)
        printf("yes\n");
    } 
    return 0;
}

得考虑全C语言标识符的定义, 按照定义来做,考虑要全面.

第一次上交想要投机取巧,看到第三个有个空格就只考虑若字符串里面含空格就输出no, 但是只符合输出样式的答案不一定就能AC。

做题不能投机取巧

 

猜你喜欢

转载自www.cnblogs.com/witharush/p/9657664.html
今日推荐