C++栈助力:轻松实现十进制到多进制的转换
在C++中,使用栈(stack)进行进制转换是一个常见的编程任务。栈是一种后进先出(LIFO, Last In First Out)的数据结构,非常适合处理此类问题,因为它允许你轻松地从一端(顶部)添加(压栈)或移除(出栈)元素。 以下是一个使用C++栈实现十进制数到其他进制(例如二进制、八进制或十六进制)转换的示例代码。这里以二进制为例,但你可以通过修改代码以支持其他进制。 ```cpp #include <iostream> #include <stack> #include <string> // 函数用于将十进制数转换为二进制字符串 std::string decimalToBinary(int decimal) { std::stack<int> stk; std::string binary = ""; // 当十进制数大于0时继续 while (decimal > 0) { // 取余数并压栈 stk.push(decimal % 2); // 更新十进制数 decimal /= 2; } // 构建二进制字符串 while (!stk.empty()) { binary += std::to_string(stk.top()); stk.pop(); } return binary; } int main() { int decimalNumber; std::cout << "Enter a decimal number: "; std::cin >> decimalNumber; // 调用函数并打印结果 std::string binaryNumber = decimalToBinary(decimalNumber); std::cout << "The binary representation is: " << binaryNumber << std::endl; return 0; } ``` 扩展至其他进制 如果你想要将上述代码扩展至其他进制(例如八进制或十六进制),你可以修改`decimalToBinary`函数中的几个地方: 1. 修改`% 2`为`% base`,其中`base`是你想要转换到的进制(例如,对于八进制是8,对于十六进制是16)。 2. 在构建字符串时,对于大于9的数字(十六进制),你可能需要使用字符(如'A'表示10,'B'表示11等)来替代数字。 例如,对于十六进制转换,你可能需要如下修改: ```cpp std::string digitToHexChar(int digit) { if (digit < 10) return std::to_string(digit); else return "ABCDEF"[digit - 10]; } std::string decimalToHex(int decimal) { std::stack<int> stk; std::string hex = ""; while (decimal > 0) { stk.push(decimal % 16); decimal /= 16; } while (!stk.empty()) { hex = digitToHexChar(stk.top()) + hex; stk.pop(); } // 如果结果是空的(即输入为0),则返回"0" if (hex.empty()) return "0"; return hex; } ``` 这段代码添加了一个辅助函数`digitToHexChar`来将数字转换为对应的十六进制字符,并修改了`decimalToHex`函数以支持十六进制转换。注意,当输入为0时,我们直接返回字符串"0"以处理特殊情况。 ######[AI写代码神器 | 734点数解答 | 2024-10-16 20:03:47]
- 揭秘!十进制数到负进制数的转换程序及代码详解(DeepSeek | 490点数解答 | 2026-01-20 17:31:14)46
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)376
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)347
- 探秘 19 进制:揭开 X 星球记数方式的神秘面纱(GPT | 268点数解答 | 2024-11-17 09:04:06)139
- Python 实现:轻松将十进制数转换为 2 - 36 进制数(字节豆包 | 509点数解答 | 2026-01-02 19:40:44)66
- Python 实现:将十进制整数高效转换为 x 进制的详细解析(字节豆包 | 499点数解答 | 2026-01-10 20:39:11)46
- 核桃星球加法的C++实现及开发建议(字节豆包 | 705点数解答 | 2026-04-06 21:10:23)21
- C++ 实现:判断 N 个数在二进制、八进制、十进制、十六进制下的可能性(字节豆包 | 812点数解答 | 2026-01-02 19:28:20)60
- Python实现:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 405点数解答 | 2026-01-02 19:43:33)59
- 巧用 Python:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 251点数解答 | 2026-01-02 19:44:35)60
- C++ 实现工厂编号二进制位设置为 1 的程序(字节豆包 | 307点数解答 | 2026-02-28 20:46:41)25
- 工厂编号位运算:将指定位置置为 0 的 C++ 实现(字节豆包 | 339点数解答 | 2026-02-28 20:48:38)27