1.回文数概念
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如 121 、 12321 、 45654 等。
2.问题描述
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
3.代码实现
以下提供两种方法思路
(1)方法一:将要判断的数拆分出来存入数组,再用for循环比较对应位置上的数是否一致。
#include<bits/stdc++.h>
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]) { // 如果位数不匹配
return false; // 不是回文数
}
}
return true; // 如果所有位数匹配,则是回文数
}
int main() {
int x;
cin >> x;
if (isPalindrome(x)) { // 检查输入的数字是否是回文数
cout << "True"; // 如果是回文数,则输出"True"
} else {
cout << "False"; // 如果不是回文数,则输出"False"
}
}
(2)方法二:将要判断的数反转后与原始数进行比较。
下图revertedNumber(示例代码中命名为reverseNum)初始化为0,然后将其乘以10再加上x的尾数,如此循环。
当原始数字小于或等于反转后的数字时,就意味着我们已经处理了一半位数的数字了,此时就要结束循环。
文章来源:https://www.toymoban.com/news/detail-757532.html
#include<bits/stdc++.h>
using namespace std;
bool isPalindrome(int x){
if(x < 0 || (x % 10 == 0 && x != 0)){ // 如果数为负数或者以 0 结尾但不是 0 本身,不是回文数
return false;
}
int reverseNum = 0; // 用于存储数字反转的变量
while(x > reverseNum){ // 当原始数大于反转后的数时执行循环
reverseNum = reverseNum * 10 + x % 10; // 反转原始数
x /= 10; // 去掉原始数的最后一位
}
return reverseNum / 10 == x || reverseNum == x; // 返回判断原始数与反转后的数是否相等
}
int main(){
int x;
cin >> x;
if(isPalindrome(x)){ // 检查输入的数字是否为回文数
cout << "True"; // 如果是回文数,则输出 "True"
}
else{
cout << "False"; // 如果不是回文数,则输出 "False"
}
}
希望我的文章能够对你有所帮助 ^_^文章来源地址https://www.toymoban.com/news/detail-757532.html
到了这里,关于C++回文数的判断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!