酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

用c++把怎么把正整数n转换成m进制

# C++实现正整数n转换成m进制 以下是一个将正整数n转换为m进制的C++实现: ```cpp #include <iostream> #include <string> #include <algorithm> std::string convertToBase(int n, int m) { // 处理特殊情况:n为0或m不在有效范围内 if (n == 0) return "0"; if (m < 2 || m > 36) { throw std::invalid_argument("基数m必须在2到36之间"); } std::string result; while (n > 0) { int remainder = n % m; // 将余数转换为对应的字符 char digit = (remainder < 10) ? (remainder + '0') : (remainder - 10 + 'A'); result.push_back(digit); n /= m; } // 反转字符串得到正确顺序 std::reverse(result.begin(), result.end()); return result; } int main() { try { int number, base; std::cout << "请输入一个正整数: "; std::cin >> number; std::cout << "请输入目标进制(2-36): "; std::cin >> base; if (number < 0) { std::cout << "请输入正整数" << std::endl; return 1; } std::string converted = convertToBase(number, base); std::cout << number << " 的 " << base << " 进制表示为: " << converted << std::endl; } catch (const std::exception& e) { std::cerr << "错误: " << e.what() << std::endl; return 1; } return 0; } ``` ## 代码说明: 1. 函数`convertToBase`接受两个参数:要转换的正整数`n`和目标进制`m` 2. 使用短除法不断除以m并记录余数 3. 余数转换为对应的字符(0-9或A-Z,支持最高36进制) 4. 最后反转字符串得到正确顺序 ## 使用示例: - 输入:n=42, m=2 → 输出:101010 - 输入:n=255, m=16 → 输出:FF - 输入:n=1023, m=8 → 输出:1777 ## 需要注意的逻辑点: 1. 输入验证:确保n是正整数,m在2-36范围内 2. 特殊字符处理:余数大于9时需要转换为字母A-Z 3. 结果顺序:余数是从低位到高位计算的,需要反转字符串 [2025-04-19 16:56:22 | AI写代码神器 | 572点数解答]

相关提问