zoukankan      html  css  js  c++  java
  • 用栈实现进制转换十进制转换成:二进制数、八进制数、十六进制数

    //用栈实现进制转换十进制转换成:二进制数、八进制数、十六进制数
    #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--;       
                    }
    }

  • 相关阅读:
    二进制回复操作
    日志和备份介绍
    mraiadb查
    mraiadb增三删改
    mardb基本操作
    redis搭建主从和多主
    ldd 查看符号找不到
    一个声明指定了多个类型
    word中为选定文本加边框和底纹
    ue配置lua语法高亮
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3429044.html
Copyright © 2011-2022 走看看