49.输入一字符串,检查是否回文 (回文是指正反序相同,如,LeveL)

(1)

#include<iostream>
using namespace std;

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

    cout<<"please input an number: "<<endl;
    cin>>b;

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

(2)

#include<iostream>
#include<string.h>//这个头文件可以使用strlen函数
using namespace std;

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

    cout<<"please input an number: "<<endl;
    cin>>b;

    for (m=0,n=strlen(b) - 1; (m!=n) && (m+1!=n); m++, n--)
    {
        if (b[m] != b[n])
        {
            cout<<"这不是回文数!"<<endl;
            return -1;//跳出循环
        }//不能判断一个就确定是回文
    }

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

(3)运用指针

#include<iostream>
#include<string.h>//这个头文件可以使用strlen函数
using namespace std;
int HuiWen(char*);

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

    cout<<"please input an number: "<<endl;
    cin>>b;

    if(HuiWen(b))
    {
        cout<<"这是回文数";
    }else
    {
        cout<<"这不是回文数";
    }

    return 0;
}

int HuiWen(char* s)
{
    if(NULL == s)
    {
        return 0;
    }
    char *head=s;//指向第一个字符
    char *tail=s+strlen(s)-1;//指向最后一个字符


    while(true)
    {
        if(head >= tail)return 1;
        if(*head == *tail)
        {
            head++;
            tail--;
        }
        else
        {
            return 0;
        }
    }
}

 

posted on 2014-08-09 13:59  Ji_xiaowu  阅读(729)  评论(0编辑  收藏  举报

导航