http://acm.hdu.edu.cn/showproblem.php?pid=2024
这道题我做了好久啊,基础知识又忘了不少,尤其是字符串的处理,好叭,复习一下。
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n,sum;
int flag;
cin>>n;
getchar(); //消除换行符\n对cin.getline的影响
while(n--){
char ch[51];
cin.getline(ch,51);
flag=0;
sum=0;
int ch_len=strlen(ch);
if(!(ch[0]=='_'||(ch[0]>='a'&&ch[0]<='z')||(ch[0]>='A'&&ch[0]<='Z'))){
cout<<"no"<<endl;
continue;
}
for(int i=0;i<ch_len;i++)
if(ch[i]=='_'||(ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z')||(ch[i]<='9'&&ch[i]>='0'))
sum++;
if(sum==ch_len)
cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return 0;
}
切记:cin输入结束后,输入流中还有一个换行符\n,这个时候如果用gets或者getline,即使不输入,也会立马会得到一个换行符。。。。。所以要加上一个getchar()之类的消除影响!!