C++编程 输入一字符串,看是否回文?回文是指正反序相同,如LeveL,若是则输出“Yes”,否则输出“No”

请大神帮忙看看,我的程序哪里错了??

#include<iostream>
using namespace std;

int main()
{
int k=0;
char b[20];

for(int i=0;i<20;i++)
{
b[i]='0';
}
cout<<"please input an number: "<<endl;
cin>>b;

for(int j=0;j<20;j++)//用于将每一位分离,并存入数组中
{
if(b[j]!='0')
{
k++;//计数器,能知道这个数一共有几位
}
}

for(int m=0;m<k;m++)//判断这个数是不是回文数
{
if(b[m]!=b[k-m-1])
{
cout<<"这不是回文数!"<<endl;
break;//跳出循环
}else
{
cout<<"这是回文数!"<<endl;
break;//跳出循环
}
}

return 0;
}

#include<iostream>
using namespace std;

int main()
{
    int k=0;
    char b[20];

/* 这轱辘没用,掐了
    for(int i=0;i<20;i++)
    {
b[i]='0';
    }
**/
    cout<<"please input an number: "<<endl;
    cin>>b;

/*这段有意义,但代码不对,改如下
    for(int j=0;j<20;j++)//用于将每一位分离,并存入数组中
    {
if(b[j]!='0')
{
k++;//计数器,能知道这个数一共有几位
}
    }
*/
for(int j=0;j<20 &&b[j]!='\0' ;j++); //字符串有一个结束符,判断它可知是否结束
k=j;
    for(int m=0;m<k;m++)
    {
        if(b[m]!=b[k-m-1])
        {
            cout<<"这不是回文数!"<<endl;
            return -1;//跳出循环
        } //不能判断一个就确定是回文
    }

//检查完毕,是回文才会到这里
cout<<"这是回文数!"<<endl;

    return 0;
}  试试效果

追问

谢谢,能否麻烦大神用string帮忙写一个程序呢??

追答

发个求助,写清题目,我试试,祝好运

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-09
逻辑上有错误啊 cin<<b的时候,不管输入什么数都只放在数组的第一个存储单元(4字节)这样也有越界的危险,也就是说不管输入什么数字,k都是1
第2个回答  2014-08-09
如果读入的字符串含有'0'字符呢。。还有,为什么不直接用string来写
第3个回答  2014-08-09
k++;//计数器,能知道这个数一共有几位 。计数完了要k=k-1;
#include<iostream>
using namespace std;

int main()
{
int k=0;
char b[20];

for(int i=0;i<20;i++)
{
b[i]='0';
}
cout<<"please input an number: "<<endl;
cin>>b;

for(int j=0;j<20;j++)//用于将每一位分离,并存入数组中
{
if(b[j]!='0')
{
k++;//计数器,能知道这个数一共有几位
}
}
k-=1;

for(int m=0;m<k;m++)//判断这个数是不是回文数
{
if(b[m]!=b[k-m-1])
{
cout<<"这不是回文数!"<<endl;
break;//跳出循环
}else
{
cout<<"这是回文数!"<<endl;
break;//跳出循环
}
}

return 0;
}
相似回答