C++利用顺序栈实现将10进制数转换为8进制数
时间: 2023-12-21 18:05:05 浏览: 150
顺序栈将一个非负的十进制整数N转换为对应的B进制数。
5星 · 资源好评率100%
可以使用顺序栈来实现将10进制数转换为8进制数的算法,具体步骤如下:
1. 定义一个空的顺序栈,用来存储8进制数的每一位。
2. 将10进制数不断除以8,直到商为0为止。每次得到的余数就是8进制数的一位,将其压入顺序栈中。
3. 从顺序栈中依次弹出每一位,组成8进制数。
下面是C++的代码实现:
```cpp
#include <iostream>
using namespace std;
#define MaxSize 100 // 定义顺序栈的最大容量
typedef struct {
int data[MaxSize]; // 存储栈中的元素
int top; // 栈顶指针,指向栈顶元素的下标
} SqStack;
// 初始化顺序栈
void InitStack(SqStack &S)
{
S.top = -1;
}
// 判断栈是否为空
bool StackEmpty(SqStack S)
{
if (S.top == -1) {
return true;
}
else {
return false;
}
}
// 进栈操作
bool Push(SqStack &S, int x)
{
if (S.top == MaxSize - 1) {
return false; // 栈满
}
else {
S.top++; // 栈顶指针加1
S.data[S.top] = x;
return true;
}
}
// 出栈操作
bool Pop(SqStack &S, int &x)
{
if (S.top == -1) {
return false; // 栈空
}
else {
x = S.data[S.top];
S.top--; // 栈顶指针减1
return true;
}
}
// 将10进制数转换为8进制数
void ConvertToOct(int n)
{
SqStack S;
InitStack(S);
while (n != 0) {
Push(S, n % 8); // 将余数压入顺序栈中
n = n / 8; // 更新商的值
}
while (!StackEmpty(S)) {
int x;
Pop(S, x); // 弹出顺序栈中的每一位
cout << x;
}
cout << endl;
}
int main()
{
int n;
cout << "请输入一个10进制数:";
cin >> n;
cout << "转换为8进制数为:";
ConvertToOct(n);
return 0;
}
```
例如,当输入10进制数为215时,输出的8进制数为327。
阅读全文