实现数制转换:输入一个十进制数D,将其转换成N进制数时,在计算过程中,把D与N求余得到的N进制数的各位依次进栈,计算完毕后将栈中的N进制数依次出栈输出。用cpp写
时间: 2024-10-21 10:08:49 浏览: 56
在C++中,你可以使用栈数据结构来实现十进制转任意进制的算法。下面是一个简单的示例代码,使用`std::stack`和循环来进行数制转换:
```cpp
#include <iostream>
#include <stack>
#include <string>
// 函数用于获取给定数字除以指定基数后的余数
int getRemainder(int num, int base) {
return num % base;
}
// 主函数,实现十进制转任意进制
std::string decimalToBase(int decimal, int base) {
std::stack<int> digits; // 存储余数的栈
while (decimal > 0) {
digits.push(getRemainder(decimal, base)); // 计算并入栈
decimal /= base;
}
// 出栈并将结果拼接成字符串
std::string result = "";
while (!digits.empty()) {
result = std::to_string(digits.top()) + result;
digits.pop();
}
return result;
}
int main() {
int decimalNum = 123;
int base = 8; // 转换成八进制
std::string convertedNum = decimalToBase(decimalNum, base);
std::cout << "十进制 " << decimalNum << " 转换为 " << base << " 进制为: " << convertedNum << std::endl;
return 0;
}
```
在这个例子中,我们首先创建一个空栈,并通过循环不断将十进制数除以目标基数取余数,然后将余数压入栈中。当十进制数变为0时,表明所有位都已经处理完,此时从栈顶开始弹出元素并转换成字符串形式,即得到的N进制数。
阅读全文
相关推荐

















