字符串问题求解!
#include<iostream>
#include<string.h>
using namespace std;
const MAX=100;
int main()
{
char a[MAX];
int n,m;
cin>>n;
while(n--)
{
int i,len;
gets(a);
len=strlen(a);
if(len==1)
cout<<"YES"<<endl;
else
for(i=0;i<len/2;i++)
{
if(a[i]!=a[len-1-i]&&(a[i]!=a[len-1-i]+32)&&(a[i]!=a[len-1-i]-32))
{
cout<<"NO"<<endl;
break;
}
else
if(i>=len/2-1)
{
cout<<"YES"<<endl;
}
}
}
return 0;
}
如上面代码所示,用VC编译,此例中我想测试n个样例,可是总在n-1个样例就结束了,是不是跟gets()有关系,求各路大神解释!
[解决办法]
#include<cstring>using namespace std;const int MAX=100;int main(){ char a[MAX]; int n; int i,len; cout<<"Enter n: "; cin>>n; //输入n的结束了,后面紧跟着一个换行符号'\n' //忽略换行符号 cin.ignore(); while(n) { cout<<"Enter a: "; gets(a); len=strlen(a); if(len==1) cout<<"YES"<<endl; else for(i=0;i<len/2;i++) { if(a[i]!=a[len-1-i]&&(a[i]!=a[len-1-i]+32)&&(a[i]!=a[len-1-i]-32)) { cout<<"NO"<<endl; break; } else if(i>=len/2-1) { cout<<"YES"<<endl; } } n--; } return 0;}
[解决办法]
在
cin>>n;
后面加
getchar();
用以过滤输入n以后的回车。这样第一次gets(a)就不会只读入一个回车了。