文字列、整数が返信文字列または返信数であるかどうかを判断します.


回文文字列または回文数とは、1つの文字列または整数が逆過去に見ても順過去に見ても同じであり、例えばabcbaは逆もabcbaであり、1331は逆に見ても1331であるため、いわゆる回文文字列または回文数である.次に,いわゆる回文文字列と回文数をプログラミングする.
1、回文文字列の検出と出力:
(1)配列の方式を採用する:
#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)ポインタ方式を採用する:
#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!
"); 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、回文整数検出と出力
#include <iostream>
using namespace std;
bool ifn(int x)
{
         int m=0,n;
         n=x;
         while(n)
         {
                   m=m*10+n%10;
                   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;
}
 

以上のプログラムコードはcfreeで検証されました.