使用C++利用栈将十进制数N转化为r进制
时间: 2024-09-20 16:01:29 浏览: 49
在C++中,我们可以使用栈数据结构来将一个十进制数转换成任意进制。这里是一个简单的步骤概述:
1. **初始化**:创建一个空栈,用于存储转换后的数字。
2. **处理十进制数**:
- 取模操作:取N除以目标基数(r),得到余数。
- 入栈:将余数压入栈中,因为栈顶的元素是最小的位。
- 更新N:N = N / r。
3. **检查是否结束**:
- 当N降为0时,表示已经处理完所有位,可以停止循环。
4. **逆序输出**:
- 从栈顶开始弹出数字,并按顺序拼接起来,形成r进制的字符串。如果需要整数形式,每取出一个数字就在前面加上对应的字符表示该进制。
```cpp
#include <iostream>
#include <stack>
#include <string>
std::string decimalToBase(int n, int r) {
std::stack<char> digits;
while (n > 0) {
digits.push((char)(n % r + '0')); // 将余数转为字符并入栈
n /= r;
}
// 逆序字符串
std::string result = "";
while (!digits.empty()) {
result += digits.top();
digits.pop();
}
return result; // 返回r进制表示
}
int main() {
int decimal = 54;
int radix = 7;
std::cout << "Decimal " << decimal << " in base " << radix << " is: " << decimalToBase(decimal, radix) << std::endl;
return 0;
}
```
阅读全文