酷代码 AI
菜单
服务商

C++ 实现:超简单的不同进制数据转换(含代码及详细解释)

```cpp #include <iostream> #include <string> #include <algorithm> // 将 n 进制数转换为十进制数 long long toDecimal(const std::string& num, int n) { long long decimal = 0; for (char digit : num) { if (digit >= '0' && digit <= '9') { decimal = decimal * n + (digit - '0'); } else { decimal = decimal * n + (digit - 'A' + 10); } } return decimal; } // 将十进制数转换为 m 进制数 std::string toBaseM(long long decimal, int m) { std::string result = ""; while (decimal > 0) { int remainder = decimal % m; if (remainder < 10) { result += (char)(remainder + '0'); } else { result += (char)(remainder - 10 + 'A'); } decimal /= m; } // 如果结果为空,说明输入为 0 if (result.empty()) { result = "0"; } // 反转结果字符串 std::reverse(result.begin(), result.end()); return result; } int main() { int n, m; std::string num; // 读取输入 std::cin >> n; std::cin >> num; std::cin >> m; // 先将 n 进制数转换为十进制数 long long decimal = toDecimal(num, n); // 再将十进制数转换为 m 进制数 std::string result = toBaseM(decimal, m); // 输出结果 std::cout << result << std::endl; return 0; } ``` 代码解释: 1. `toDecimal` 函数:将 `n` 进制数转换为十进制数。遍历 `n` 进制数的每一位,根据字符的值计算十进制数。如果字符是数字,则直接转换;如果是字母,则将其转换为对应的数值。 2. `toBaseM` 函数:将十进制数转换为 `m` 进制数。通过不断取模和整除操作,将十进制数转换为 `m` 进制数的每一位,并存储在结果字符串中。最后反转结果字符串得到正确的顺序。 3. `main` 函数:读取输入的 `n`、`n` 进制数和 `m`,调用 `toDecimal` 函数将 `n` 进制数转换为十进制数,再调用 `toBaseM` 函数将十进制数转换为 `m` 进制数,最后输出结果。 复杂度分析: - 时间复杂度:$O(k)$,其中 $k$ 是输入的 `n` 进制数的位数。 - 空间复杂度:$O(k)$,主要用于存储转换后的 `m` 进制数。 ######[AI问答 | 692点数解答 | 2025-12-03 19:08:50]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]