用栈实现进制转换十进制转换成:二进制数、八进制数、十六进制数

//用栈实现进制转换十进制转换成:二进制数、八进制数、十六进制数
#include<stdio.h>  //进制转换 实现十进制转换成:二进制数、八进制数、十六进制数
#include<malloc.h>
#include<process.h>
#define MAXSIZE 50
typedef struct
{
        int data[MAXSIZE];
        int top;
}list_stack;

int main()
{       
        printf("(程序功能:实现十进制转换成二进制数、八进制数、十六进制数)\n");
        list_stack *p;
        p=(list_stack*)malloc(sizeof(list_stack));
        p->top=0;
        int i,j;
        printf("请输入你要转换的十进制数:\n");
        scanf("%d",&i);
        printf("转换后的数为:",i);

for(;;)
{
        printf("你要转化成何种进制的数:\n0.退出\t2.二进制\t8.八进制\t16.十六进制\n",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("\n");
}
        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--;       
                }
}

posted @ 2013-11-18 11:21  博园少主  阅读(12946)  评论(0编辑  收藏  举报