1.回文数字:判断一个数字是不是回文数。(回文数的特点是正反序是同一个数字,如:12321,3443)。
2.回文字符串:判断一个字符串是不是回文字符串。(回文字符串特点是原字符串与字符串逆序之后一样,如:"abcba","cddc")。
#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;
}