酷代码 AI
菜单
服务商

数据结构c++进制转换使用进出栈方法全部代码

在C++中,可以使用栈(stack)来实现进制转换。这里提供一个完整的示例代码,该程序将一个十进制数转换为其他进制(如二进制、八进制或十六进制)。我们将使用`std::stack`来存储转换过程中产生的每一位数字,并在最后从栈中弹出这些数字以形成最终的转换结果。 ```cpp #include <iostream> #include <stack> #include <string> // 函数声明 std::string convertToBase(int number, int base); int main() { int number; int base; std::cout << "Enter the number in decimal: "; std::cin >> number; std::cout << "Enter the base to convert to (2, 8, 16): "; std::cin >> base; if (base != 2 && base != 8 && base != 16) { std::cerr << "Error: Base must be 2, 8, or 16." << std::endl; return 1; } std::string result = convertToBase(number, base); std::cout << "The number " << number << " in base " << base << " is: " << result << std::endl; return 0; } std::string convertToBase(int number, int base) { std::stack<int> stack; std::string result = ""; const char* digits = "0123456789ABCDEF"; // 处理负数 if (number < 0) { number = -number; result += '-'; } do { int remainder = number % base; stack.push(remainder); number /= base; } while (number > 0); // 将栈中的元素弹出并构建结果字符串 while (!stack.empty()) { int digit = stack.top(); stack.pop(); result += digits[digit]; } return result; } ``` 代码解释 1. 函数 `convertToBase`: - 接受两个参数:要转换的十进制数 `number` 和目标进制 `base`。 - 使用 `std::stack` 来存储每次除法运算后的余数。 - 通过 `do-while` 循环不断将 `number` 除以 `base`,并将余数压入栈中,直到 `number` 变为 0。 - 从栈中弹出所有元素,构建最终的字符串结果。 2. 主函数 `main`: - 从用户输入获取十进制数和目标进制。 - 检查目标进制是否为 2、8 或 16,如果不是则输出错误信息并退出程序。 - 调用 `convertToBase` 函数进行转换,并输出结果。 这个程序可以处理正数和负数的转换,并且支持二进制、八进制和十六进制的转换。希望这个示例对你有所帮助! [2024-10-16 20:07:26 | AI写代码神器 | 667点数解答]

相关提问
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]