首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符串有关问题求解

2012-03-29 
字符串问题求解!#includeiostream#includestring.husing namespace stdconst MAX100int main(){cha

字符串问题求解!
#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)就不会只读入一个回车了。

热点排行