#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define StackInitSize 100
#define StackIncrement 10
typedef struct{
int *base;
int top;
int stacksize;
}SqStack;
void InitStack(SqStack &S){
//创建一个初始大小为StackInitSize的空顺序栈
S.base=(int*)malloc(StackInitSize*sizeof(int));
if(!S.base)
return;
S.top=0;
S.stacksize=StackInitSize;
}//InitStack
int StackEmpty(SqStack S){
//判断顺序栈S是否为空栈
if(S.top==0)
return 1;
return 0;
}//StackEmpty
void Push(SqStack &S,int e){
//将新元素e入顺序栈S
if(S.top>=S.stacksize){
S.base=(int*)realloc(S.base,(S.stacksize+StackIncrement)*sizeof(int));
if(!S.base)
return;
S.stacksize += StackIncrement;
}
S.base[S.top++] = e;
}//Push
void Pop(SqStack &S,int &e){
//若顺序栈非空,则将栈顶元素出栈,并用变量e返回其值
if(S.top==0)
return;
e=S.base[--S.top];
}//Pop
void Conversion(int n,int d){
//将一个十进制正整数n转换成一个d进制正整数
SqStack S;
int e;
InitStack(S);
while(n){
Push(S,n%d);
n=n/d;
}
e=n%d;
while(!StackEmpty(S)){
Pop(S,e);
printf("%d",e);
}
} //Conversion
int main()
{
int n;
int d;
printf("请输入一个数:");
scanf("%d",&n);
printf("请输入需要转换成几进制:");
scanf("%d",&d);
Conversion(n,d);
printf("%s\n",d);
return 0;
}
#include <stdlib.h>
#include <malloc.h>
#define StackInitSize 100
#define StackIncrement 10
typedef struct{
int *base;
int top;
int stacksize;
}SqStack;
void InitStack(SqStack &S){
//创建一个初始大小为StackInitSize的空顺序栈
S.base=(int*)malloc(StackInitSize*sizeof(int));
if(!S.base)
return;
S.top=0;
S.stacksize=StackInitSize;
}//InitStack
int StackEmpty(SqStack S){
//判断顺序栈S是否为空栈
if(S.top==0)
return 1;
return 0;
}//StackEmpty
void Push(SqStack &S,int e){
//将新元素e入顺序栈S
if(S.top>=S.stacksize){
S.base=(int*)realloc(S.base,(S.stacksize+StackIncrement)*sizeof(int));
if(!S.base)
return;
S.stacksize += StackIncrement;
}
S.base[S.top++] = e;
}//Push
void Pop(SqStack &S,int &e){
//若顺序栈非空,则将栈顶元素出栈,并用变量e返回其值
if(S.top==0)
return;
e=S.base[--S.top];
}//Pop
void Conversion(int n,int d){
//将一个十进制正整数n转换成一个d进制正整数
SqStack S;
int e;
InitStack(S);
while(n){
Push(S,n%d);
n=n/d;
}
e=n%d;
while(!StackEmpty(S)){
Pop(S,e);
printf("%d",e);
}
} //Conversion
int main()
{
int n;
int d;
printf("请输入一个数:");
scanf("%d",&n);
printf("请输入需要转换成几进制:");
scanf("%d",&d);
Conversion(n,d);
printf("%s\n",d);
return 0;
}
