杭电acm 2024 C语言合法标识符

做本题前:(1).了解合法标识符(包括32个关键字不能做标识符)

     (2).cin.ignore()用这个是因为getline(cin,s)这个函数……咋说能,就像反应慢半拍一样,读取不对齐。

#include<iostream>

//#include<fstream>

#include<string>

using namespace std;

int main()

{

   //ifstream cin("2024_input.txt");  

  string keyword[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"};  

  int t;

   cin>>t;

   string s;

   cin.ignore();

  while(t--)

   {

      int i,flag=1;  

      getline(cin,s);  

     if(!(s.at(0)=='_'||(s.at(0)>='a'&&s.at(0)<='z')||(s.at(0)>='A'&&s.at(0)<='Z')))    cout<<"no"<<endl;  

     else   

    {

         for(i=1;i<s.size();++i)

       {    

           if(!(s.at(i)=='_'||(s.at(i)>='0'&&s.at(i)<='9')||(s.at(i)>='a'&&s.at(i)<='z')||(s.at(i)

>='A'&&s.at(i)<='Z')))     

        {      cout<<"no"<<endl;      flag=0;      break;     }    }    

          for(i=0;i<32;++i)  

            {     if(s==keyword[i])   

            {      flag=0;      cout<<"no"<<endl;     }    }

           if(flag==1)   

            cout<<"yes"<<endl;   }  }  

          return 0;

}

总结:这个题,我这个很水的人都觉着很水,仔细认真就行了。。。

posted @ 2012-10-10 23:04  MegamindLS  阅读(1417)  评论(0编辑  收藏  举报