当前位置:文档之家› C语言实现十进制转换为任意进制(栈)

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

实验报告
课程名称:数据结构
年级班级:计算机1712
学号姓名:查玉坤 ********** 任课教师:***
实验目的
设计算法,把十进制整数转换为二至九进制之间的任一进制输出。

实验内容
代码如下:
#include<stdio.h>
#include<stdlib.h>
#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;
for(i=S->top-1;i>=0;i--)
printf("%d",S->base[i]);
printf("\n");
}
int main(){
int a,b,Jin,x,X,size;
a=1;
printf("输入一个十进制数\n");
scanf("%d",&x);
X=x;
printf("需要转化为多少进制数?\n");
scanf("%d",&Jin);
sqstack S;
initstack(&S);
while(x>=Jin){
a=(x%Jin);
b=(x/Jin);
push(&S,a);
x=b;
}
push(&S,x);
printf("转换的%d进制数为:",Jin);
list(&S);
printf("验证:\n");
for(int i=S.top;i>0;i--){
if(i-1!=0) printf("%d*(%d^%d)+",S.base[i-1],Jin,i-1);
else printf("%d*(%d^0)=%d\n",S.base[i-1],Jin,X);
}
return 0;
}。

相关主题