21xrx.com
2025-04-01 14:11:29 Tuesday
文章检索 我的文章 写文章
C++如何判断回文数
2023-07-07 16:13:14 深夜i     26     0
C++ 回文数 判断

回文数是指一个数字从前往后读和从后往前读都一样,比如121、12321等。在C++中,判断一个数是否是回文数可以使用一些简单的代码逻辑实现。

首先,我们可以将数字转换成字符串,并判断其逆序字符串是否和原字符串相同。具体实现如下:

#include <iostream>
#include <string>
using namespace std;
bool is_palindrome(int num) {
  string str = to_string(num);  // 将数字转换为字符串
  string rev_str(str.rbegin(), str.rend());  // 反转字符串
  return str == rev_str;  // 判断反转后的字符串是否和原字符串相同
}
int main() {
  int num;
  cout << "请输入一个数字:";
  cin >> num;
  if (is_palindrome(num))
    cout << "这是一个回文数";
   else
    cout << "这不是一个回文数";
  
  return 0;
}

以上代码中,我们使用了to_string函数将数字转换成字符串,并使用rbegin和rend函数反转字符串。最后再将反转后的字符串和原字符串做比较即可得出判断结果。

另外,我们还可以使用取模运算和除法运算的方式来判断一个数是否是回文数。具体实现如下:

bool is_palindrome(int num) {
  if (num < 0)   // 负数不是回文数
    return false;
  
  int temp = num;
  int reverse_num = 0;
  while (temp > 0) {
    int digit = temp % 10;  // 取出个位数
    reverse_num = reverse_num * 10 + digit;  // 把个位数加到反转数的末尾
    temp /= 10;  // 去掉取出的个位数
  }
  return num == reverse_num;  // 判断反转后的数是否和原数相同
}

以上代码中,我们使用了模运算和除法运算来取出数字的各个位上的数字,并把它们加到一个新的数字reverse_num的末尾,最后再将反转后的数和原数做比较即可得出结果。

无论是使用字符串反转方法还是取模运算方法,都可以实现判断一个数是否是回文数。需要注意的是,负数不是回文数,需要进行特殊处理。

  
  

评论区

请求出错了