HDOJ 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

     

 

 首先,要明白,什么是C语言标识符:字母,数字,下划线。并且数字不能开头。明白了C语言标识符,就知道了本题的判定条件。

        接下来,要知道,不管是C还是C++,标准的输入scanf和cin,都无法读取空格,也就是说输入的字符串中有空格,那么这两个输入函数就无法读取空格之后的字符。所以本题可以用getline(),直接读取一行,默认以'\n'换行符结尾。

        同时有一个细节非常容易忽略,那就是在第一次输入数字n之后,scanf或者cin读取了n,但是n后边还有一个换行字符没有读取,所以在后边使用getline()读取字符串的时候,getline()会先把n后边的换行符读取,造成读取中断,无法再读取后边的字符串。所以需要在读取n之后,加一个getchar(),将换行符读取,之后就可以正常编写程序了。

#include
#include
#include
#include

using namespace std;

int main()
{
    int n;
    while(cin>>n)
    {
        getchar();
        while(n--)
        {
            string str;
            int num=0;
            getline(cin,str);
            for(int i=0;i

 

你可能感兴趣的:(刷题笔记)