判断十进制数和二进制数均对称的数c++
时间: 2024-09-10 08:21:23 浏览: 51
在C++中,要判断一个十进制数和它的二进制表示是否都对称(即回文),我们需要考虑两种情况:十进制数本身是回文的,以及它的二进制表示也是回文的。下面是一个可能的实现方法:
1. 判断十进制数是否为回文:可以通过将数字转换为字符串,然后比较字符串与其反转后的字符串是否相同来判断。
2. 将十进制数转换为二进制表示,并判断二进制数是否为回文:这可以通过将十进制数转换为二进制字符串,然后再判断这个字符串是否为回文来实现。
以下是C++代码的示例:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
bool isDecimalPalindrome(int num) {
std::string str = std::to_string(num);
std::string reversedStr = str;
std::reverse(reversedStr.begin(), reversedStr.end());
return str == reversedStr;
}
bool isBinaryPalindrome(int num) {
std::string binaryStr = "";
while(num > 0) {
binaryStr += std::to_string(num % 2);
num /= 2;
}
std::string reversedBinaryStr = binaryStr;
std::reverse(reversedBinaryStr.begin(), reversedBinaryStr.end());
return binaryStr == reversedBinaryStr;
}
bool isBothPalindrome(int num) {
return isDecimalPalindrome(num) && isBinaryPalindrome(num);
}
int main() {
int num;
std::cout << "请输入一个整数: ";
std::cin >> num;
if(isBothPalindrome(num)) {
std::cout << num << "的十进制和二进制表示都是回文数。" << std::endl;
} else {
std::cout << num << "的十进制或二进制表示不是回文数。" << std::endl;
}
return 0;
}
```
这段代码首先定义了两个辅助函数`isDecimalPalindrome`和`isBinaryPalindrome`分别判断十进制数和二进制数是否为回文。然后`isBothPalindrome`函数结合这两个判断来确定一个数是否同时满足十进制和二进制都为回文的条件。最后,在`main`函数中,我们通过用户输入来检验这个数是否满足条件。
阅读全文