ACM

paidream 2013-09-05 06:01:06
C语言合法标识符
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 28227 Accepted Submission(s): 11352


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


Author
#include<iostream>
using namespace std;
#include<string>
int main(){
int n;
cin>>n;
while(n--){
string s;
getline(cin,s);
for(string::size_type ix=0;ix!=s.size();ix++){
if(ix==0){
if(s[0]=='_'||isalpha(s[0]))
continue;
else
break;
}
if(isalnum(s[ix])||s[ix]=='_')
continue;
else
break;
}
if(ix==s.size())
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}

}

http://acm.hdu.edu.cn/showproblem.php?pid=2024
...全文
122 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
__GUNS_N_ROSES__ 2013-09-06
  • 打赏
  • 举报
回复
啰嗦一句...这种问题只要有跑过程序就能发现的吧...不应该啊不应该
__GUNS_N_ROSES__ 2013-09-06
  • 打赏
  • 举报
回复
第一次getline把case数也读进来了。 解决办法可以在cin>>n之后立刻getline一下,这样在while里面就能正确处理数据。 严格来说合法标识符还需要排除掉关键词,不过这题不用干这事儿就AC了水的名副其实...
paidream 2013-09-05
  • 打赏
  • 举报
回复
求解决啊 。。。。
paidream 2013-09-05
  • 打赏
  • 举报
回复
不知道换行符 哪里错了

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧