1.回文数字:判断一个数字是不是回文数。(回文数的特点是正反序是同一个数字,如:12321,3443)。

2.回文字符串:判断一个字符串是不是回文字符串。(回文字符串特点是原字符串与字符串逆序之后一样,如:"abcba","cddc")。


wKioL1bAWKey4D3zAADhxegsZMM739.jpg

#include<iostream>
using namespace std;

int PalindromeNumber(size_t count)
{
 //1.在自然数范围内
 //2.情况:0-9,11、99,121,1221,

 int flag = 0;
 int tail = 0, head = 0;
 size_t tmp = count;
 //flag = count >= 0 ? 0 : -1;//定义时是size_t自动截断所以不判断也可若,若定义时使用int 则需要判断
 int arr[10] = { 0 };//将数字变为数组存储
 //char arr[10] = { 0 };//也可将数字变为字符串存储
 memset(arr, -1, 10 * sizeof(int));
 while (tmp)
 {
  arr[tail++] = tmp % 10;
  tmp /= 10;
 }
 for (head = 0; head < tail; tail--, head++)
 {
  if (arr[head] != arr[tail - 1])
   break;
 }
 if (head >= tail)
  flag = 1;
 return flag;
}


int PalindromeString(char* str)//C++的引用
{
 //思路:与回文数思路相似
 //先遍历一遍字符串找到tail
 int flag = 0;
 int tail = strlen(str);
 int head = 0;
 for (head = 0; head < tail; tail--, head++)
 {
  if (str[head] != str[tail - 1])
   break;
 }
 if (head >= tail)
  flag = 1;
 return flag;
}

void test()
{
 size_t count = 0;
 int flag = 0;
 count = 0;
 flag = PalindromeNumber(count);
 if (flag == 1)
  printf("数字 %d 是回文数字\n",count);
 else if (flag == 0)
  printf("数字 %d 不是回文数字\n", count);
 else
  printf("输入错误\n");
 count = 11;
 flag = PalindromeNumber(count);
 if (flag == 1)
  printf("数字 %d 是回文数字\n", count);
 else if (flag == 0)
  printf("数字 %d 不是回文数字\n", count);
 else
  printf("输入错误\n");
 count = 65465;
 flag = PalindromeNumber(count);
 if (flag == 1)
  printf("数字 %d 是回文数字\n", count);
 else if (flag == 0)
  printf("数字 %d 不是回文数字\n", count);
 else
  printf("输入错误\n");
 count = 12221;
 flag = PalindromeNumber(count);
 if (flag == 1)
  printf("数字 %d 是回文数字\n", count);
 else if (flag == 0)
  printf("数字 %d 不是回文数字\n", count);
 else
  printf("输入错误\n");
 count = 159951;
 flag = PalindromeNumber(count);
 if (flag == 1)
  printf("数字 %d 是回文数字\n", count);
 else if (flag == 0)
  printf("数字 %d 不是回文数字\n", count);
 else
  printf("输入错误\n");
 count = 10;
 flag = PalindromeNumber(count);
 if (flag == 1)
  printf("数字 %d 是回文数字\n", count);
 else if (flag == 0)
  printf("数字 %d 不是回文数字\n", count);
 else
  printf("输入错误\n");
 count = 121521;
 flag = PalindromeNumber(count);
 if (flag == 1)
  printf("数字 %d 是回文数字\n", count);
 else if (flag == 0)
  printf("数字 %d 不是回文数字\n", count);
 else
  printf("输入错误\n");

 char str[100];
 while (1)
 {
  cin >> str;
  flag = PalindromeString(str);
  if (flag == 1)
   printf("此字符串是回文字符串\n");
  else if (flag == 0)
   printf("此字符串不是回文字符串\n");
 }
}


int main()
{
 test();
 system("pause");
 return 0;
}


wKioL1bAWSHR2uAfAAESyzHmnQQ176.jpg