判断一个字符串、整数是否为回文字符串或回文数

xiaoxiao2021-02-28  103

所谓回文字符串或回文数,就是一个字符串或整数反过去看与顺过去看都是一样的,比如abcba反过来也是abcba,1331反过来看也是1331,所以这就是所谓的回文字符串或回文数。下面我们就来编程得到所谓的回文字符串和回文数。

1、回文字符串检测并输出:

(1)采用数组的方式:

[html]  view plain  copy #include <iostream>   using namespace std;      int main(void)   {       char str[180],l;       int i,t=0;       cout<<"输入一个字符串:";       cin>>str;       l=strlen(str);       for(i=0;i<=l/2;i++)      {           if(str[i]!=str[l-i-1])           {               break;           }       }         if(i>l/2)           cout<<str<<"是回文!"<<endl;        else           cout<<str<<"不是回文!"<<endl;   }   (2)采用指针的方式:

[html]  view plain  copy #include <stdio.h>   #include <string.h>   #include <stdlib.h>      int main(void)   {       int x,i;       char *st1=NULL;          st1 = (char *)malloc(100 * sizeof(char));       if(NULL == st1)       {           printf("malloc failed!\n");           return -1;       }          memset(st1,0, 100);          gets(st1);              x=strlen(st1);              for(i = 0; i <= x/2; i++)///比到一半就不比了,原理已讲       {           if(st1[i] != st1[x-i-1])///这就是比较两端的字符           {               break;//不是回文           }       }          free(st1);       st1 = NULL;              if(i> x/2)///没执行break,就是回文           printf("YES");       else           printf("NO");      }   数组和指针的区别在于就是数组是在静态存储区上创建的,而指针是动态创建的,相对来说指针比较灵活。指针灵活的同时,必须注意指针必须初始化和被释放,要不然指针用起来就很危险的。

2、回文整数检测并输出

[html]  view plain  copy #include <iostream>   using namespace std;   bool ifn(int x)   {            int m=0,n;            n=x;            while(n)            {                      m=m*10+n;                      n=n/10;              }            if(m==x)                      return true;            if(m!=x)                      return false;   }   void main( )   {            int a;       cout<<"输入一个数:";            cin>>a;            if(ifn(a))        cout<<a<<"是回文数!"<<endl;        else        cout<<a<<"不是回文数!"<<endl;   }      
转载请注明原文地址: https://www.6miu.com/read-69858.html

最新回复(0)