C语言 数字回文
判断一个数字是否为回文,数字位数在20位内。
每行输入数字n
每行输该数字出是否为回文,是则输出Yes,否则输出No.
Sample Input
5
88
15
Sample Output
Yes
Yes
No
用c++怎么写啊?
[解决办法]
#include <stdio.h>#include <string.h>int ishw(unsigned long n){ char str[32]; int i; int len; if(n < 10) { return 0; } sprintf(str, "%lu", n); len = strlen(str); for(i = 0; i < len / 2; i++) { if(str[i] != str[len - 1 - i]) { return -1; } } return 0;}int main(int argc, char* argv[]){ unsigned long n; do{ scanf("%lu", &n); if(ishw(n) == 0) { printf("Yes\n"); } else { printf("No\n"); } }while(n != 0); return 0;}
[解决办法]
#include <iostream>#include <stdio.h>#include <string.h>using namespace std;int main(){ char num_str[21] = {0}; char num_rev[21] = {0}; for (size_t i = 0 ; i != 1000 ; ++i) { sprintf(num_str, "%d", i); strcpy(num_rev, num_str); strrev(num_rev); if (strcmp(num_str, num_rev) == 0) cout << i << "\t-->\t回文" << endl; } return 0;}
[解决办法]
#include <string.h>#include <stdio.h>int main(int argc , char* argv[]){ char string[100]; int result; printf("Input a string and I will tell you if it is a palindrome:\n"); gets(string); /* Reverse string and compare (ignore case): */ result = _stricmp(string, _strrev(_strdup(string))); if (result == 0) printf("The string \"%s\" is a palindrome\n\n", string); else printf("The string \"%s\" is not a palindrome\n\n", string);}
[解决办法]