C++实现数制转换:输入一个十进制数D,将其转换成N进制数时,在计算过程中,把D与N求余得到的N进制数的各位依次进栈,计算完毕后将栈中的N进制数依次出栈输出。
时间: 2024-10-23 20:16:21 浏览: 32
在 C++ 中,我们可以使用栈数据结构和一个字符数组来实现十进制转N进制的过程。下面是一个具体的例子:
```cpp
#include <iostream>
#include <stack>
#include <string>
std::string decimalToBaseN(int decimal, int base) {
std::stack<int> digitsStack; // 存放每位的值
while (decimal > 0) {
int remainder = decimal % base; // 取余数
digitsStack.push(remainder); // 将余数入栈
decimal /= base; // 更新原数
}
std::string result; // 结果字符串
while (!digitsStack.empty()) {
result += std::to_string(digitsStack.top()); // 将栈顶元素加入结果
digitsStack.pop(); // 弹出栈顶元素
}
return result;
}
int main() {
int decimalNum = 123; // 十进制数
int base = 5; // 目标进制
std::string nBaseNum = decimalToBaseN(decimalNum, base);
std::cout << "十进制数 " << decimalNum << " 转换为 " << base << " 进制为: " << nBaseNum << '\n';
return 0;
}
```
这段代码首先计算出十进制数除以目标基数的余数,然后将余数压入栈中。当原数变成0时,开始从栈顶取出余数并转换成对应的字符,直到栈为空。最后返回的结果就是所需的N进制数。
阅读全文