要解决这个进制转换问题,可以使用C或C++中的标准库函数。以下是一个简单的C++实现:
- #include <iostream>
- #include <string>
- #include <algorithm>
- std::string convertToBase(int number, int base) {
- if (base != 2 && base != 8 && base != 16) {
- return "Invalid base";
- }
- std::string result;
- const char* digits = "0123456789ABCDEF";
- while (number > 0) {
- result += digits[number % base];
- number /= base;
- }
- std::reverse(result.begin(), result.end());
- return result;
- }
- int main() {
- int N, x;
- std::cin >> N >> x;
- if (N == 0) {
- std::cout << "0" << std::endl;
- } else {
- std::cout << convertToBase(N, x) << std::endl;
- }
- return 0;
- }
复制代码
### 代码说明:
1. **`convertToBase`函数**:这个函数负责将十进制整数转换为指定的进制。它使用一个字符串`digits`来表示各个数字和字母。
2. **循环**:通过`while`循环不断将数字除以目标进制,并将余数转换为相应的字符,直到数字为0。
3. **结果反转**:由于计算过程中得到的结果是逆序的,所以需要使用`std::reverse`函数将其反转。
4. **输入输出**:在`main`函数中读取输入的十进制数和目标进制,并输出转换结果。
这个程序可以处理输入为0的情况,并且只支持2、8、16三种进制转换。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。