C语言实现十进制转换为任意进制(栈)

实 验 报 告

课程名称:数据结构 年级班级:计算机1712 学号姓名:查玉坤 2017116128 任课教师:康长青

数据结构

实验目的

设计算法,把十进制整数转换为二至九进制之间的任一进制输出。

实验内容

代码如下:

#include #include #define INITSIZE 100 typedef int ElemType; typedef struct

{ int top; ElemType *base; int stacksize; }sqstack;

/*初始化操作(创建一个空栈S)*/

void initstack(sqstack *S)

{ S->base=(ElemType *)malloc(INITSIZE*sizeof(ElemType)); S->top=0; S->stacksize=INITSIZE; }

/*入栈操作(将值为x的数据元素插入到栈S中,使之成为栈顶元素)*/

int push(sqstack *S,ElemType x) { if(S->top>=S->stacksize)

{S->base=(ElemType*)realloc(S->base,(S->stacksize+1)*sizeof(ElemType)); if(!S->base) return 0; S->stacksize++; }

S->base[S->top++]=x; return 1; }

/*输出栈操作(输出自栈顶到栈底的元素值)*/ void list(sqstack *S) { int i;

1

数据结构

for(i=S->top-1;i>=0;i--) printf(\ printf(\}

int main(){ int a,b,Jin,x,X,size; a=1; }

printf(\输入一个十进制数\\n\scanf(\X=x;

printf(\需要转化为多少进制数?\\n\scanf(\sqstack S; initstack(&S); while(x>=Jin){ a=(x%Jin); b=(x/Jin); push(&S,a); x=b; }

push(&S,x);

printf(\转换的%d进制数为:\list(&S); printf(\验证:\\n\

for(int i=S.top;i>0;i--){ if(i-1!=0) printf(\ else printf(\ } return 0;

2

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4