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


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

  • 相关阅读:
    静态绑定与动态绑定
    Java之浅拷贝与深拷贝
    python类对象及类实例的创建过程
    以订单和商品为例进行详细的组内数据获取的分析
    根据给定时间及偏移的年份求偏移后时间的前一天(支持偏移量为正和负)
    mysql取到组内的前几条数据
    python进程通信的几种实现方式
    python-redis之数据类型二
    python-redis之数据类型
    python-redis
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3429044.html
Copyright © 2020-2023  润新知