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

来源:互联网 发布:淘宝会员名怎么隐藏 编辑:程序博客网 时间:2024/05/19 14:34

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

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

(1)采用数组的方式:

[html] view plain copy
  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main(void)  
  5. {  
  6.     char str[180],l;  
  7.     int i,t=0;  
  8.     cout<<"输入一个字符串:";  
  9.     cin>>str;  
  10.     l=strlen(str);  
  11.     for(i=0;i<=l/2;i++)  
  12.    {  
  13.         if(str[i]!=str[l-i-1])  
  14.         {  
  15.             break;  
  16.         }  
  17.     }   
  18.      if(i>l/2)  
  19.         cout<<str<<"是回文!"<<endl;  
  20.      else  
  21.         cout<<str<<"不是回文!"<<endl;  
  22. }  
(2)采用指针的方式:

[html] view plain copy
  1. #include <stdio.h>  
  2. #include <string.h>  
  3. #include <stdlib.h>  
  4.   
  5. int main(void)  
  6. {  
  7.     int x,i;  
  8.     char *st1=NULL;  
  9.   
  10.     st1 = (char *)malloc(100 * sizeof(char));  
  11.     if(NULL == st1)  
  12.     {  
  13.         printf("malloc failed!\n");  
  14.         return -1;  
  15.     }  
  16.   
  17.     memset(st1,0, 100);  
  18.   
  19.     gets(st1);  
  20.       
  21.     x=strlen(st1);  
  22.       
  23.     for(i = 0; i <= x/2; i++)///比到一半就不比了,原理已讲  
  24.     {  
  25.         if(st1[i] != st1[x-i-1])///这就是比较两端的字符  
  26.         {  
  27.             break;//不是回文  
  28.         }  
  29.     }  
  30.   
  31.     free(st1);  
  32.     st1 = NULL;  
  33.       
  34.     if(i> x/2)///没执行break,就是回文  
  35.         printf("YES");  
  36.     else  
  37.         printf("NO");     
  38. }  
数组和指针的区别在于就是数组是在静态存储区上创建的,而指针是动态创建的,相对来说指针比较灵活。指针灵活的同时,必须注意指针必须初始化和被释放,要不然指针用起来就很危险的。

2、回文整数检测并输出

[html] view plain copy
  1. #include <iostream>  
  2. using namespace std;  
  3. bool ifn(int x)  
  4. {  
  5.          int m=0,n;  
  6.          n=x;  
  7.          while(n)  
  8.          {  
  9.                    m=m*10+n%10;  
  10.                    n=n/10;   
  11.           }  
  12.          if(m==x)  
  13.                    return true;  
  14.          if(m!=x)  
  15.                    return false;  
  16. }  
  17. void main( )  
  18. {  
  19.          int a;  
  20.     cout<<"输入一个数:";  
  21.          cin>>a;  
  22.          if(ifn(a))  
  23.      cout<<a<<"是回文数!"<<endl;  
  24.      else  
  25.      cout<<a<<"不是回文数!"<<endl;  
  26. }  
  27.    
原创粉丝点击