// 判断一个整数是否是回文:
// 方法1:将数拆分出来存入数组,比较前后对应位置上的数是否相同
#include <iostream>
using namespace std;bool isPalindrome(int x){int store[100]; // 用于存储该数字中的每个数 int i = 0; if(x<0) // 如果数字为负数,则不是回文数return false; //提取数字的各个位并存储在数组中while(x){store[i]=x%10; // 每次取数的末尾存入数组中 i++; x/=10; // 去掉最后一位}// 比较前后对应位置上的数是否相同 for(int j=0;j<i/2;j++){if(store[j]!=store[i-1-j]){ // i在i++时多1,所以要减1 return false; }}return true;
}int main(){int x;cin >> x;if(isPalindrome(x)){ cout<<" is a palindrome." ; } else {cout<<" is not a palindrome." ; }
}
// 判断一个整数是否是回文:
// 方法2:将数反转后与原数进行比较,循环只是循环一半的数进行比较是否与进行计算后的原数相等。
#include <iostream>
#include <string>
using namespace std;bool isPalindrome(int x) {// 负数和10的倍数不能是回文if (x < 0 || (x != 0 && x % 10 == 0)) {return false;}int reverseNum = 0;// 当x>或=reverseNum时进行循环 // eg:x=123321(偶数)时:经过循环x=123,reverseNum=123;// eg:x=12321(奇数):经过循环x=12,reverseNum=123/10=12while (x > reverseNum) { reverseNum = reverseNum* 10 + x % 10;x /= 10;}//偶数 奇数return reverseNum == x || reverseNum / 10 == x;}int main() {int num;std::cout << "Enter an integer: ";std::cin >> num;if (isPalindrome(num)) {cout << num << " is a palindrome." << endl;} else {cout << num << " is not a palindrome." <<endl;}return 0;
}