#include<cstdio>
#include<cstdlib>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int ElemType;
typedef int Status;
typedef struct{
int stacksize;
int *top;
int *base;
}SqStack;
Status InitStack(SqStack &S){
S.base=(ElemType*)malloc(STACK_INIT_SIZE *sizeof(ElemType));
if(!S.base)
return -1;
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return 1;
}
Status EmptyStack(SqStack &S){
if(S.base==S.top)
return 1;
else
return 0;
}
Status Push(SqStack &S,ElemType e){
if(S.top-S.base>=S.stacksize){
S.base=(ElemType*)realloc(S.base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(ElemType));
if(!S.base)
return -1;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return 1;
}
Status Pop(SqStack &S,ElemType &e){
if(S.base==S.top)
return -1;
e=*--S.top;
return 1;
}
int main(){
SqStack S;
ElemType e;
int N,n;
InitStack(S);
printf("将十进制转换为的进制:(2-16):\n");
scanf("%d",&N);
printf("将十进制整数n转换为%d进制:\n",N);
scanf("%d",&n);
while(n){
Push(S,n%N);
n=n/N;
}
while(!EmptyStack(S)){
Pop(S,e);
if(e<=9)
printf("%d",e);
else
printf("%c",e+55);//因为10数字的ASCII代码比A字符小55;
}
printf("\n");
}
【进制转换】
最新推荐文章于 2021-09-18 17:41:38 发布