这个题的输入问题比较多,防止接受n后面的那个回车,!!的那行可以改成
while(cin>>n){getchar();}
getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.
while(scanf("%d ",&n)!=EOF)
while(scanf("%d\n",&n)!=EOF)
scanf(“%*c”),作用是这个字符不读取!
while(cin>>n){cin.ignore();}
ignore()读入的字符的个数默认为1,所以,不用参数调用ignore()就意味着“丢掉下一个字符”
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n,i,l,m,j;
char a[50];
while(scanf("%d%*c",&n)!=EOF)!!
{
for(i=1;i<=n;i++)
{
m=1;
gets(a);
l=strlen(a);
if((a[0]<'A'||a[0]>'Z')&&a[0]!='_'&&(a[0]<'a'||a[0]>'z'))
m=0;
if(l>1)
{
for(j=1;j<l;j++)
{
if((a[j]<'A'||a[j]>'Z')&&a[j]!='_'&&(a[j]<'a'||a[j]>'z')&&(a[j]<'0'||a[j]>'9'))
{
m=0;
break;
}
}
}
if(m) cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
}
}