(HDU2024 C++) C语言合法标识符

C语言合法标识符

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

`

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


所谓标识符,就是你起的一个名字。c/c++中,是你用来标识变量名、符号常量名、函数名、数组名、文件名
、类名、对象名等的。(就好像你父母有了你以后给你起的名字)~~ c/c++有效标识符的构成规则如下
(1)第一个字符必须是字母(不分大小写)或下划线(_);
(2)后跟字母(不分大小写)、下划线(_)或数字组成;
(3)标识符中的大小写字母有区别。如,变量sum,sum,sum代表三个不同的变量;
(4)不能与c编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名。比如,不能将标识符
命名为float,auto,break,case,this,try,for,while,int,char,short, unsigned,等等
****************************************************/

源代码如下

#include
#include
using namespace std;
int main()
{
    int n;
    while (cin >> n)
    {
        string  c;
        getline(cin, c);
        while (n--)
        {
            string str;
            getline(cin, str);
            int long_ = str.length();
            if (long_ <= 50)
            {
                if ((str[0] >= 'a'&&str[0] <= 'z') || (str[0] >= 'A'&&str[0] <= 'Z') || str[0] == '_')
                {
                    for (int i = 0; i < long_; i++)
                    {
                        if ((str[i] >= 'A'&&str[i] <= 'Z') || (str[i] >= 'a'&&str[i] <= 'z') || str[i] == '_'||(str[i]>='0'&&str[i]<='9'))
                        {
                            if (i == long_ - 1)
                                cout << "yes" << endl;
                            continue;
                        }
                        else
                        {
                            cout << "no" << endl;
                            break;
                        }
                    }
                }
                else
                    cout << "no" << endl;
            }
            else
                cout << "yes" << endl;
        }

    }
    return 0;
}

你可能感兴趣的:(HDU100题)