读书人

字符串有关问题求解

发布时间: 2012-03-29 12:53:13 作者: rapoo

字符串问题求解!
#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()有关系,求各路大神解释!

[解决办法]

C/C++ code
#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)就不会只读入一个回车了。

读书人网 >C++

热点推荐