题目:非负十进制数与二进制、八进制、十六进制的转换;
实现过程:
定义一个顺序栈,代码如下:
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct SqStack{
int *base;
int *top;
int stacksize;
};
编写栈的一些基本操作函数,代码如下:
int InitStack(SqStack &S){
=(int *) malloc (STACK_INIT_SIZE * sizeof(int));
if(!) cout<<"OVERFLOW"<<endl;
=;
=STACK_INIT_SIZE;
return 1;
}//构建一个空栈S
int Push(SqStack &S,int e){
if(->=){
=(int *)realloc(,(+STACKINCREMENT)*sizeof(int));
if(!)cout<<"OVERFLOW"<<endl;
=+;
=+STACKINCREMENT;
}
*++=e;
return 1;
}//插入一个元素e为新的栈顶元素
int Pop(SqStack &S,int &e){
if(==)return 0;
e=*--;
return 1;
}//若栈不空,则删除S的栈顶元素,用e返回其值
int StackEmpty(SqStack S){
if(==)return 1;
return 0;
}//判断栈是否空
主函数实现,二进制与八进制的转换类似,这里以八进制为例(二进制只需将代码中的8换成2),代码如下:
void main(){
SqStack S;
int e;
InitStack(S);
int N;
cout<<"请输入一个非负的十进制数"<<endl;
cin>>N;
if(N>=0)//判断输入的十进制数是否
进制转换 来自淘豆网m.daumloan.com转载请标明出处.