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; }
原文:http://10739786.blog.51cto.com/10729786/1741951