#include#include #define SIZE 10 typedef char Type; typedef struct stack { Type *data; // 顺序栈存储单元首地址 int capacity; //容量 int top; //栈顶 }SeqStack; void InitStack(SeqStack *ss);//c创建栈 void Change(SeqStack *ss,int n,int m); //相应的进制转换 bool IsFull(SeqStack *ss);//判断栈满 void Print(SeqStack *ss);//输出 void Push(SeqStack *ss,Type value);//入栈 int main() { SeqStack ss; InitStack(&ss); int x,y; printf("请输入转换的数字:n"); scanf("%d",&x); printf("请输入转换的进制:"); scanf("%d",&y); Change(&ss,x,y); Print(&ss); } void Change(SeqStack *ss,int n,int m) { int r; //余数 char c; //转换后余数对应的字符 while(n != 0) { r = n % m; if(r < 10) { c = r + '0'; } else { c = r - 10 + 'a'; } Push(ss,c); n = n / m; } } void InitStack(SeqStack *ss)//创建栈 { ss->capacity = SIZE;//容量 //首元地址 ss->data = (Type*)malloc(sizeof(Type)*ss->capacity); ss->top = 0;//栈顶指针 } bool IsFull(SeqStack *ss)//判断栈满 { return ss->top == ss->capacity?true:false; } void Print(SeqStack *ss)//输出站内元素 { for(int i = ss->top-1;i>=0;--i) printf("%c",ss->data[i]); printf("n"); } void Push(SeqStack *ss,Type value)//入栈 { if(IsFull(ss)) { printf("栈已满,无法入栈n"); return; } ss->data[ss->top] = value; ss->top++; }



