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;
}

...用于判断任一字符串是否是回文(即顺序读与反序读一样
bool ispalindrome(string s){ string::const_reverse_iterator CRIter = s.rbegin (); string temp; while (CRIter != s.rend ()) temp.push_back (*CRIter++); if (temp == s) return true; else return false; } ...

C++从键盘输入一个正整数,如何判断是否为回文数?
输入以下程序即可判断:int len=strlen(s)-1,i;bool judge=true;for(i=0;iif(s[i]!=s[len-i]){ judge=false;break;} 1、“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(p...

C++判断字符串是否为回文(回文:顺读倒读都相同),求大神看看下面代码哪 ...
cout<<"yes"<<endl;return 0;}

c++ 判断一个字符串是否是回文 程序怎么写
【思路解析】所谓的回文字符串就是正着念和倒着念是一样的字符串,比如:ABA或ABBA都是回文字符串。判断回文字符串的办法就是成对比较,就是把字符串的第一个字符和倒数第一个字符比较,把第二个字符和倒数第二个比较……,以此类推。所以要写一个判断字符串是否回文的函数要先算出字符串S的字符...

...输入:一个串数n。 输出:如果是回文数输出“YES”,否则输出“NO...
…(制表符就是在键盘的左上角Esc下面两个的Tab)然后是最重要的,你的这份代码错误挺多的,虽然改正确没什么问题,但是我没有自信通过简单的注释跟你解释清楚……我是很支持学编程的,因为我就是学这个专业的。如果想找我的话,最好加我QQ:578827362,我可以慢慢跟你讲……include<iostream> using...

C++语言 输入一个正整数,判断它是否是回文数
#include<stdio.h> #include<stdlib.h> int main(){ int num,k,n=0;printf("请输入一个数:");scanf("%d",&num);k=num;while(k>0){ n=n*10+k%10;k=k/10;} if(n==num)printf("%d是回文数",n);else printf("No!它不是回文数...

C++求助!在主函数中输入一字符串 ,在被调函数中判断该字符串是否是回文...
cout<<"请输入一个长度小于80的字符串:"<<endl;cin>>a;fun(a);} 第二题;include<iostream> using namespace std;void show(int a[][4]){ for(int i=0;i<3;i++){ for(int j=0;j<4;j++)cout<<a[i][j]<<' 'cout<<endl;} } void main (){ int a[3][4],b[3][4...

判断输入的一个字符串是否为回文串,若是输出“Yes”,否则输出“No...
错误原因:1)C语言中变量的定义属于声明,需要写在一个函数的开始部分。2)把一个字符串中的字符逆序取出赋值给另一个字符数组时,记得末尾加上空字符。参考代码如下,希望能帮到您!include <stdio.h> include <stdlib.h> int main(void){ char str[100];int length;char str1[100];int a=0...

c语言编程题 输入一字符串,判断该字符串是否为回文。
100];int i=0,j=0;printf("请输入字符串:\\n");gets(a);while(a[i]!='\\0')i++;i--;for(;j<=i;i--,j++){ if(a[i]!=a[j]){ break;} } if(j<=i){ printf("不是回文串\\n",a);} else { printf("是回文串\\n",a);} system("pause");return 0;} 运行效果:...

C语言用指针编写函数判断输入的字符串是是否为回文,然后再主函数中_百...
j = 2; j < i; j++) \/*对大于2的数进行判断*\/ { if (i % j == 0)return 0。4、void main({ int i;for (i = 10; i < 1000; i++)if (ss(i) == 1) \/*判断是否是回文数*\/。5、 if (i \/ 100 == 0) \/*判断是否是两位数*\/。6、得到最后的结果。

相似回答