// 判断一个整数是否是回文:
// 方法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=12
while (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;
}