hdu 2024 C语言合法标识符
2010-09-01 12:37
399 查看
C语言合法标识符
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10155 Accepted Submission(s): 4235
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#include <iostream> #include <cmath> #include <vector> #include <cstdio> #include <algorithm> #include <ctype.h> #include <string> using namespace std; vector<string> keyword; //这个是对关键字的定义,很多人丢失了 void PreProcess() { keyword.push_back("auto"); keyword.push_back("break"); keyword.push_back("case"); keyword.push_back("char"); keyword.push_back("const"); keyword.push_back("continue"); keyword.push_back("default"); keyword.push_back("do"); keyword.push_back("double"); keyword.push_back("else"); keyword.push_back("enum"); keyword.push_back("extern"); keyword.push_back("float"); keyword.push_back("for"); keyword.push_back("goto"); keyword.push_back("if"); keyword.push_back("int"); keyword.push_back("long"); keyword.push_back("struct"); keyword.push_back("register"); keyword.push_back("return"); keyword.push_back("signed"); keyword.push_back("short"); keyword.push_back("sizeof"); keyword.push_back("static"); keyword.push_back("switch"); keyword.push_back("typedef"); keyword.push_back("union"); keyword.push_back("unsigned"); keyword.push_back("void"); keyword.push_back("volatile"); keyword.push_back("while"); } inline bool Process(string temp) { if(!isalpha(temp[0]) && temp[0]!='_') return false; for(int i = 1;i < (int)temp.size();i++) if(!isalpha(temp[i])&&!isalnum(temp[i])&&temp[i]!='_') return false; for(int j = 0;j < (int)keyword.size();j++) if(temp == keyword[j]) return false; /*if(temp.size() > 32)//我觉得在这里应该加上,但是加上后就会WA return false;*/ return true; } int main() { PreProcess(); int n; char buff[56]; memset(buff,0,sizeof(buff)); while(cin>>n) { getchar(); int num = 0; while(true && n != 0)//为了防止敲击仅仅敲击回车后的空输入 { gets(buff); string temp(buff); if(temp != "") { num++; if(Process(temp)) cout<<"yes"<<endl; else cout<<"no"<<endl; if(num == n) break; } } } return 0; }
相关文章推荐
- hdu 2024 C语言合法标识符 (java)
- HDU 2024 C语言合法标识符
- HDU 2024 C语言合法标识符
- HDU 2024 C语言合法标识符(水~)
- 【暑期基础】Y HDU 2024 C语言合法标识符
- HDU 2024 C语言合法标识符
- HDU 2024 C语言合法标识符(水题)
- HDU:2024 c语言合法标识符
- hdu 2024 C语言合法标识符
- HDU_2024——判断字符串是否是c语言合法标识符
- HDU 2024 - C语言合法标识符
- hdu 2024 c语言合法标识符 结题报告
- Hdu 2024 C语言合法标识符
- hdu 2024 C语言合法标识符
- HDU 2024 C语言合法标识符(笑)
- HDU - 2024 C语言合法标识符(water)
- hdu 2024 C语言合法标识符
- Hdu 2024C语言合法标识符
- hdu 2024 C语言合法标识符
- hdu 2024 C语言合法标识符