k 进制数转换为十进制数的 C++ 实现
### 💡 思路分析 要将一个 `k` 进制数转换为十进制数,可以使用按位加权求和的方法。对于一个 `k` 进制数 \( a_{n}a_{n - 1}\cdots a_{0}\),其对应的十进制数为 \( a_{n}\times k^{n}+a_{n - 1}\times k^{n - 1}+\cdots+a_{0}\times k^{0}\)。 ### 📝 代码实现 ```cpp #include <iostream> #include <string> #include <cctype> using namespace std; // 将字符转换为对应的数值 int charToInt(char c) { if (isdigit(c)) { return c - '0'; } else { return c - 'A' + 10; } } // 将 k 进制数转换为十进制数 int convertToDecimal(int k, const string& num) { int decimal = 0; for (char c : num) { decimal = decimal * k + charToInt(c); } return decimal; } int main() { int k; string num; // 输入 k 进制 cin >> k; // 输入 k 进制数 cin >> num; // 转换为十进制数 int result = convertToDecimal(k, num); // 输出结果 cout << result << endl; return 0; } ``` ### 🔍 代码解释 1. **`charToInt` 函数**:该函数用于将字符转换为对应的数值。如果字符是数字,则直接减去字符 `'0'` 得到对应的数字;如果字符是大写字母,则减去字符 `'A'` 并加上 10 得到对应的数值。 2. **`convertToDecimal` 函数**:该函数用于将 `k` 进制数转换为十进制数。通过遍历 `k` 进制数的每一位,将当前的十进制数乘以 `k` 并加上当前位对应的数值,最终得到转换后的十进制数。 3. **`main` 函数**:首先读取输入的 `k` 和 `k` 进制数,然后调用 `convertToDecimal` 函数进行转换,最后输出转换后的十进制数。 ### 🚀 复杂度分析 - **时间复杂度**:$O(n)$,其中 $n$ 是 `k` 进制数的长度。需要遍历 `k` 进制数的每一位。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ### 💡 开发建议 - **输入验证**:在实际应用中,应该对输入的 `k` 和 `num` 进行验证,确保 `k` 在合法范围内,并且 `num` 中的每一位都在 `k` 进制的合法字符范围内。 - **错误处理**:可以添加错误处理机制,例如当输入不合法时输出错误信息。 - **代码扩展**:可以扩展代码,支持更大范围的进制转换,例如支持 `k` 大于 16 的情况。 ######[AI写代码神器 | 728点数解答 | 2026-07-25 19:08:55]
- 揭秘!十进制数到负进制数的转换程序及代码详解(DeepSeek | 490点数解答 | 2026-01-20 17:31:14)74
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)537
- 探秘 19 进制:揭开 X 星球记数方式的神秘面纱(GPT | 268点数解答 | 2024-11-17 09:04:06)164
- Python 实现:轻松将十进制数转换为 2 - 36 进制数(字节豆包 | 509点数解答 | 2026-01-02 19:40:44)92
- Python 实现:将十进制整数高效转换为 x 进制的详细解析(字节豆包 | 499点数解答 | 2026-01-10 20:39:11)70
- 核桃星球加法的C++实现及开发建议(字节豆包 | 705点数解答 | 2026-04-06 21:10:23)58
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)455
- C++ 实现:判断 N 个数在二进制、八进制、十进制、十六进制下的可能性(字节豆包 | 812点数解答 | 2026-01-02 19:28:20)86
- Python实现:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 405点数解答 | 2026-01-02 19:43:33)92
- 巧用 Python:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 251点数解答 | 2026-01-02 19:44:35)96
- C++ 实现工厂编号二进制位设置为 1 的程序(字节豆包 | 307点数解答 | 2026-02-28 20:46:41)44
- 工厂编号位运算:将指定位置置为 0 的 C++ 实现(字节豆包 | 339点数解答 | 2026-02-28 20:48:38)45