本代码可支持,10进制转换为任意进制的数
#include#include #include #define maxsize 100 typedef int status;//使后面可以使用status类型,用来表示成功或失败状态 #define ERROR -1 #define OK 1 typedef struct { int *base; int *top; int stacksize; }sqstack; status init(sqstack *S) {//顺序栈的初始化 S->base=(int *)malloc(sizeof(int)); if(!S->base) exit(OVERFLOW); S->top=S->base; S->stacksize=maxsize; return OK; } status push(sqstack *S,int e)//顺序栈入栈 {//插入元素e为新的栈顶元素 if(S->top-S->base==S->stacksize) return ERROR; *S->top++=e; return OK; } char pop(sqstack *S)//顺序栈出栈 {//删除S的栈顶元素,用e返回其值 int e; if(S->top==S->base) return ERROR; e=*(--S->top); return e; } char gettop(sqstack *S)//取栈顶元素 {//返回S的栈顶元素,不修改栈顶指针 if(S->top!=S->base) return *(S->top-1); } status StackTraverse(sqstack *S) { // 从栈顶到栈底依次输出栈中的每个元素 if(S->top==S->base)printf("The Stack is Empty!");//判断栈是否为空 else { printf("The Stack is: "); S->top--; while(S->top>=S->base) { printf("%d ", *S->top); S->top--; } } printf("n"); return OK; } bool empty(sqstack *s)//判断栈是否为空 { return (s->top==s->base);//为空,返回1 } void conversion(sqstack *s,int i) { int e,n; printf("n请输入你要转化的数据:"); scanf("%d",&n); while(n) { push(s,n%i); n=n/i; } while(!empty(s)) { e=pop(s); printf("%d",e); } } int main() { sqstack Sta;int n; sqstack *S=&Sta; init(S); printf("这里是进制转化处理程序n"); printf("请输入你想将10进制转换为几进制?n"); scanf("%d",&n); printf("10进制转化为%d",n); conversion(S,n); return 0; }
输出
输入
16 15362



