利用栈的基本操作实现将任意一个十进制整数转化为R进制整数。算法为:1、定义栈的顺序存取结构2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等)3、定义一个函数用来实现上面问题:(1)十进制整数X和R作为形参(2)初始化栈(3)只要X不为0重复做下列动作将X%R入栈,X=X/R(4)只要栈不为空重复做下列动作栈顶出栈,输出栈顶元素#includestdio.h#includestdlib.h#includemalloc.h#definestack_init_size100#definestackincrement10typedefstructsqstack{int*base;int*top;intstacksize;}sqstack;intStackInit(sqstack*s){s-base=(int*)malloc(stack_init_size*sizeof(int));if(!s-base)return0;s-top=s-base;s-stacksize=stack_init_size;return1;}intPush(sqstack*s,inte){if(s-top-s-base=s-stacksize){s-base=(int*)realloc(s-base,(s-stacksize+stackincrement)*sizeof(int));if(!s-base)return0;s-top=s-base+s-stacksize;s-stacksize+=stackincrement;}*(s-top++)=e;returne;}intPop(sqstack*s,inte){if(s-top==s-base)return0;e=*--s-top;returne;}intstackempty(sqstack*s){if(s-top==s-base){return1;}else{return0;}}intconversion(sqstack*s){intn,e=0,flag=0;printf(输入要转化的十进制数:\n);scanf(%d,&n);printf(要转化为多少进制:2进制、8进制、16进制填数字!\n);scanf(%d,&flag);printf(将十进制数%d转化为%d进制是:\n,n,flag);while(n){Push(s,n%flag);n=n/flag;}while(!stackempty(s)){e=Pop(s,e);switch(e){case10:printf(A);break;case11:printf(B);break;case12:printf(C);break;case13:printf(D);break;case14:printf(E);break;case15:printf(F);break;default:printf(%d,e);}}printf(\n);return0;}intmain(){sqstacks;StackInit(&s);conversion(&s);return0;}