栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

XTU,C语言,Legal Identifier

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XTU,C语言,Legal Identifier

题目描述

C语言的标识符必须满足以下条件

  1. 只能由数字,英文字母,下划线组成
  2. 首字母不能是数字
  3. 不能是关键字,关键字一共32个为:
    auto break case char const continue default do double else enum extern
    float for goto if int long register return short signed sizeof static
    struct switch typedef union unsigned void volatile while
    

现在给一个字符串,请判断一下是否为合法的标识符?

输入

第一行是一个整数K(K≤ 10000),表示样例的个数。 以后每行是一个不含空白符的字符串,长度不超过32个字符。

输出

每行输出一个样例的结果,如果是合法的标识符,输出“Yes”,否则输出“No”。(引号不要输出)

样例输入

5
1a
a
a1
_
if

样例输出

No
Yes
Yes
Yes
No

我能想到的就只有这个方法了。

strcmp() 用来比较字符串(区分大小写),字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,若差值不为0 则将差值返回。

所以如果返回值为零,则两个字符串相同。

#include 
#include 
int main()
{
    char str1[35];
    char str2[33][11]={"auto","break","case","char","const","continue","default",
    "do","double","else","enum","extern",
    "float","for","goto","if","int","long","register","return",
    "short","signed","sizeof","static",
    "struct","switch","typedef","union","unsigned","void","volatile","while"};
    int n,i,flag,len;
    scanf("%d",&n);
    while(n--)
    {
        flag = 0;
        scanf("%s",str1);
        len = strlen(str1);
        if(str1[0]>='A'&&str1[0]<='Z'||
        str1[0]>='a'&&str1[0]<='z'||str1[0]=='_')
        {
            for(i = 1;i < len;i++)
            {
                if(str1[i]>='A'&&str1[i]<='Z'||
                str1[i]>='a'&&str1[i]<='z'||str1[i]=='_'
                ||str1[i]>='0'&&str1[i]<='9')
                flag = 0;
                else
                {
                    flag = 1;
                    break;
                }
            }
            if(len < 10&&flag==0)
            {
                for(i = 0;i < 33;i++)
                {
                    if(strcmp(str1,str2[i])==0)
                    flag = 1;
                }
            }
            if(flag)
            printf("Non");
            else printf("Yesn");
        }
        else
        printf("Non");
        memset(str1,'',35);
    }
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/587644.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号