现在的位置: 首页 > 综合 > 正文

hdu 2024 C语言合法标识符

2018年05月02日 ⁄ 综合 ⁄ 共 923字 ⁄ 字号 评论关闭

C语言合法标识符

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 36111    Accepted Submission(s): 14531

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

 

/*题解:
    测试数据有点弱,水题
     注意事项:
    1.开头不为数字(开头可以是_下划线)
    2.中间只能是字母,数字或下划线。
    写个判断函数OK
    */

#include<cstdio>
#include<cstring>
int judge(char *a)
{
    int i,len,t=0;
    for(i=0; i<strlen(a); i++)
    {                         //开头不为数字(开头可以是_下划线) 
        if((a[0]!='_'&&a[0]<'A')||(a[0]!='_'&&a[0]>'Z'&&a[0]<'a')||a[0]>'z'&&a[0]!='_')
        return 0;             //中间只能是字母,数字或下划线 
        if((a[i]>='0'&&a[i]<='9')||a[i]=='_'||(a[i]<='z'&&a[i]>='a')||(a[i]>='A'&&a[i]<='Z'))
        t++;
    }
    if(t!=strlen(a)) return 0;   //判断是否有空格 
    return 1;
}
int main(){
    int T,i;
    char a[1010];
    scanf("%d",&T);
    getchar();     //吃掉回车符 
    while(T--)
    {
        gets(a);
        if(judge(a))
        {
            printf("yes\n");
        }
        else
        printf("no\n");
    }
    return 0;
}

抱歉!评论已关闭.