利用栈将十进制整数N转换成r进制数数据结构代码c++
时间: 2024-12-08 18:20:50 浏览: 18
在C++中,我们可以使用栈的数据结构来实现从十进制数到任意基数(r进制)的转换。以下是一个简单的代码示例:
```cpp
#include <iostream>
#include <stack>
using namespace std;
// 定义字符数组存储结果
char result[100];
void decimalToBase(int n, int r) {
stack<int> digits;
while (n > 0) {
digits.push(n % r);
n /= r;
}
// 从栈顶开始填充结果数组
while (!digits.empty()) {
result[digits.top()] = (n > 0) ? '0' + '9' : 'A' - 1; // 补充'0'-'9'或'A'-'Z'
result[++digits.top()] = '\0'; // 添加换行符
n--;
}
}
int main() {
int decimalNum = 12345;
int radix = 16; // 示例中转十六进制
cout << "Decimal to " << radix << " base: ";
decimalToBase(decimalNum, radix);
cout << result << endl;
return 0;
}
```
这个程序首先计算除法并将余数压入栈中,然后从栈顶开始取出余数并转换为对应的字符(对于十六进制,我们通常使用小写字母'a'-'f'表示数字10-15)。注意在处理大于9的数字时需要特殊处理。
阅读全文