文章目录
1.题目描述
请设计一个栈,实现十进制数转任意进制数
2.代码实现
#include <iostream>
using namespace std;
#define MAXSIZE 100
typedef struct
{
int *base;//栈底指针
int *top;//栈顶指针
int stacksize;//栈最大容量
} SqStack;
//初始化栈
void InitStack(SqStack &S)
{
S.base=new int [MAXSIZE];//整型数组的首地址赋给栈底指针
S.top=S.base;//栈顶指针指向栈顶指针
S.stacksize=MAXSIZE;//栈的大小设为MAXSIZE
}
//入栈操作
void Push(SqStack &S,int e)
{
*S.top=e;//栈顶元素置为e
S.top++;//栈顶指针指向下一位
}
//出栈
void Pop(SqStack &S,int &e)
{
--S.top;//栈顶指针减1
e=*S.top;//栈顶元素赋给e
}
void conversion(int N,int n)
{
SqStack S;
int e;
InitStack(S);
while(N)
{
Push(S,N%n);//如果N不为0,将N%n压入栈中
N=N/n;//N置为N/n的商
}
while(S.base!=S.top)
{
//如果栈不为空,弹出栈顶元素
Pop(S,e);
cout<<e;
}
}
int main()
{
int N,n;
char c='Y';
while(c=='Y')
{
cout<<"请输入一个十进制整数:";
cin>>N;
cout<<"请输入想转换的进制:";
cin>>n;
conversion(N,n);
cout<<endl;
cout<<"继续请输入Y,结束请输入N:";
cin>>c;
}
return 0;
}