//用栈实现进制转换十进制转换成:二进制数、八进制数、十六进制数
#include<stdio.h> //进制转换 实现十进制转换成:二进制数、八进制数、十六进制数
#include<malloc.h>
#include<process.h>
#define MAXSIZE 50
typedef struct
{
int data[MAXSIZE];
int top;
}list_stack;
int main()
{
printf("(程序功能:实现十进制转换成二进制数、八进制数、十六进制数)
");
list_stack *p;
p=(list_stack*)malloc(sizeof(list_stack));
p->top=0;
int i,j;
printf("请输入你要转换的十进制数:
");
scanf("%d",&i);
printf("转换后的数为:",i);
for(;;)
{
printf("你要转化成何种进制的数:
0.退出 2.二进制 8.八进制 16.十六进制
",i);
scanf("%d",&j);
if(j==0)
{
exit(0);
}
if(j==2)
{
void change_stack(list_stack *p,int i,int j);//调用进制转换的函数
change_stack(p,i,j);
}
if(j==8)
{
void change_stack(list_stack *p,int i,int j);//调用进制转换的函数
change_stack(p,i,j);
}
if(j==16)
{
void change_stack(list_stack *p,int i,int j);//调用进制转换的函数
change_stack(p,i,j);
}
if(j!=0 ||j!=2||j!=8||j!=16)
printf("您输入有误,请重新输入!");
printf("
");
}
return 0;
}
//实现进制转换的函数
void change_stack(list_stack *p,int i,int j)
{
int chushu,shang,yushu;
while(shang!=0)
{
chushu=i;
shang=i/j;
yushu=i%j;
p->data[p->top]=yushu;//余数入栈
p->top=p->top+1;
i=shang;
}
void delet_stack(list_stack *p);//调用出栈函数
delet_stack(p);
}
void delet_stack(list_stack *p)//出栈
{
int x;
if(p->top==0)
printf("当前栈为空!");
else
while(p->top!=NULL)
{
x=p->data[p->top-1]; //存储需要删除的栈顶元素
printf("%d",x);
p->top--;
}
}