使用 C++ 实现二进制到八进制的转换程序
以下是一个用 C++ 编写的程序,用于将二进制数转换为八进制数: ```cpp #include <iostream> #include <string> #include <cmath> // 二进制字符串转换为十进制数 int binaryToDecimal(const std::string& binary) { int decimal = 0; int power = 0; for (int i = binary.length() - 1; i >= 0; --i) { if (binary[i] == '1') { decimal += std::pow(2, power); } ++power; } return decimal; } // 十进制数转换为八进制字符串 std::string decimalToOctal(int decimal) { if (decimal == 0) return "0"; std::string octal = ""; while (decimal > 0) { octal = std::to_string(decimal % 8) + octal; decimal /= 8; } return octal; } int main() { std::string binary; std::cin >> binary; // 先将二进制转换为十进制 int decimal = binaryToDecimal(binary); // 再将十进制转换为八进制 std::string octal = decimalToOctal(decimal); std::cout << octal << std::endl; return 0; } ``` ### 代码解释: 1. **`binaryToDecimal` 函数**:该函数接受一个二进制字符串作为输入,将其转换为十进制数。通过遍历二进制字符串,从右到左依次计算每一位的权重并累加,最终得到十进制数。 2. **`decimalToOctal` 函数**:该函数接受一个十进制数作为输入,将其转换为八进制字符串。通过不断地取模和整除操作,将十进制数转换为八进制数。 3. **`main` 函数**:读取用户输入的二进制字符串,调用 `binaryToDecimal` 函数将其转换为十进制数,再调用 `decimalToOctal` 函数将十进制数转换为八进制字符串,最后输出八进制字符串。 ######[AI问答 | 509点数解答 | 2026-03-21 19:51:10]
- JS函数 change(n,x):轻松实现数字二进制与八进制转换及注意要点(百度文心 | 436点数解答 | 2025-04-09 22:19:11)137
- C++ 实现:判断 N 个数在二进制、八进制、十进制、十六进制下的可能性(字节豆包 | 812点数解答 | 2026-01-02 19:28:20)46
- Python实现:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 405点数解答 | 2026-01-02 19:43:33)42
- 巧用 Python:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 251点数解答 | 2026-01-02 19:44:35)46
- C++实现单门课程成绩管理系统:教师学生双身份操作全解析(GPT | 6361点数解答 | 2024-05-24 02:01:02)534
- C++实现:功能完备的单门课程成绩管理系统(GPT | 4293点数解答 | 2024-05-24 10:20:03)376
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- JSP 实现商品展示模块:分页、搜索、交互与美观界面全搞定!(字节豆包 | 19点数解答 | 2024-12-13 15:00:43)330
- PyCharm 中用 Selenium 编写自动化测试脚本,轻松登录 eShop 测试平台并点击“我的订单”(字节豆包 | 304点数解答 | 2024-11-06 15:38:30)430
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- C++ 实现超实用单门课程成绩管理系统,教师学生灵活使用! (GPT | 68点数解答 | 2024-05-24 10:17:09)330
- C++ 实现以 9 为基数的加法运算:代码示例与注意要点(字节豆包 | 349点数解答 | 2024-12-22 15:04:41)241