C语言合法标识符

算法 专栏收录该内容
85 篇文章 0 订阅

C语言合法标识符

输入一个字符串,判断其是否是C的合法标识符。

Input

输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。

Output

对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。

Sample Input

3
12ajf
fi8x_a
ff  ai_2

Sample Output

no
yes
no

C++编写:

由于先前自认为是对的,结果提交了很多次都是Wrong Answer,就感觉这个题可能要考虑关键字,就去网上搞了个别人没有考虑关键字的代码进去测试然而过了,然后又费力写了半天,其中还出了些让人头皮发麻的问题,终于搞出来了,代码如下:

/*合法标识符:
  所有标识符必须由字母或下划线开头
  标识符不能是关键字(此处不考虑)
 */
#include <iostream>
#include <string>
using namespace std;
int main()
{
    int n;
    cin>>n;
    cin.ignore();      //这个必须写,就是这玩意儿让人头皮发麻
    while(n--)
    {
        string a;
        getline(cin,a);
        int i;
        if(!(a[0]=='_' || (a[0]>='a' && a[0]<='z') || (a[0]>='A' && a[0] <= 'Z')))
        {
            cout<<"no"<<endl;
        }
        else
        {
            for(i=1;i<a.size();i++)
            {
                if(!(a[i]=='_' || (a[i]>='a' && a[i]<='z') || (a[i]>='A' && a[i] <= 'Z')||(a[i]>='0'&& a[i]<='9')))
                {
                    cout<<"no"<<endl;
                    break;
                }
            }
            if(i == a.size())
                cout<<"yes"<<endl;
        }
    }
}

当然代码注释出来了那一行,一直觉得自己真的没错了,就是Wrong Answer,真是能把人搞死。幸亏在网上看到了关于这样一个解说,加上去就直接Accept了。别人写的这篇文章也是关于这个题的,考虑了标识符是关键字的情况,大家可以了解一下,网址如下:
杭电acm 2024 C语言合法标识符

个人觉得当然当时去找来测试该题是否需要考虑关键字的情况的那个解题方法也很好,是调用库函数来完成的,也很有必要了解一下,此处就不窃取人家的代码发到自己的文章上了,提供一下他的网站:
HDU-2024 C语言合法标识符

  • 4
    点赞
  • 0
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值