文章目录
1.题目描述
2.代码实现
1.题目描述
请设计一个栈,实现十进制数转任意进制数
2.代码实现
#include <iostream>
using namespace std;#define MAXSIZE 100typedef 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;//栈顶元素置为eS.top++;//栈顶指针指向下一位
}
//出栈
void Pop(SqStack &S,int &e)
{--S.top;//栈顶指针减1e=*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;
}