zoukankan      html  css  js  c++  java
  • 进制转换

    #include<stdio.h>
    #include<stdlib.h>
    #define STACK_INT_SIZE 10
    #define STACK_INCREMENT 2
    #define TRUE 1
    #define FALSE 0
    #define OK 1
    #define ERROR 0
    #define OVERFLOW 0
    typedef struct SqStack{
        int *base;
        int *top;
        int stacksize;
    }SqStack;
    
    void InitStack(SqStack *sq){
        sq->base = (int *)malloc(STACK_INT_SIZE*sizeof(int));
        if(!sq->base){
            exit(OVERFLOW);
        }
        sq->top=sq->base;
        sq->stacksize = STACK_INT_SIZE;
    }
    int StackEmpty(SqStack sq){
        if(sq.base == sq.top)
            return TRUE;
        else
            return FALSE;
    }
    int StackLength(SqStack sq){
        return (sq.top-sq.base);    
    }
    void Push(SqStack *sq,int e){
        if(sq->top-sq->base == sq->stacksize){
            sq->base = (int*)realloc(sq->base,(sq->stacksize+STACK_INCREMENT)*sizeof(int));
        if(!sq->base)
            exit(OVERFLOW);
        sq->top = sq->base+STACK_INCREMENT;
        sq->stacksize +=STACK_INCREMENT;
        }
        *(sq->top++) = e;
    }
    int Pop(SqStack *s,int *e){
        if(s->top == s->base )
            return ERROR;
        *e = *--s->top;
        return OK;
    }
    void conversion_16(){
        SqStack s;
        int n;
        int e;
        InitStack(&s);
        printf("将进制数转化为16进制数
    请输入n (n>0):");
        scanf("%d",&n);
        while(n){
            Push(&s,n%16);
            n = n/16;
        }
        while(!StackEmpty(s)){
            Pop(&s,&e);
            if(e>9){
                printf("%c",e+55);
            }
            else
                printf("%d",e);
        }
        printf("
    ");
    }
    void conversion_8(){
        SqStack s;
        int n;
        int e;
        InitStack(&s);
        printf("将10进制数转化为8进制数
    请输入n (n>0):");
        scanf("%d",&n);
        while(n){
            Push(&s,n%8);
            n = n/8;
        }
        while(!StackEmpty(s)){
            Pop(&s,&e);
            printf("%d",e);
        }
            
        printf("
    ");
    }
    void conversion_2(){
        SqStack s;
        int n;
        int e;
        InitStack(&s);
        printf("将10进制数转化为2进制数
    请输入n (n>0):");
        scanf("%d",&n);
        while(n){
            Push(&s,n%2);
            n = n/2;
        }
        while(!StackEmpty(s)){
            Pop(&s,&e);
            printf("%d",e);
        }
        printf("
    ");
    }
    int main(){
        SqStack sq;
        InitStack(&sq);
        conversion_16();
        conversion_8();
        conversion_2();
        return 0;
    }
  • 相关阅读:
    C++ Base64 编码 解码
    C语言 线性表 链式表结构 实现
    C语言 线性表 顺序表结构 实现
    Python基于共现提取《釜山行》人物关系
    SciPy
    操作 numpy 数组的常用函数
    Numpy
    Python 科学计算-介绍
    使用Python定制词云
    事件驱动-协程实现爬虫
  • 原文地址:https://www.cnblogs.com/shubin/p/6877069.html
Copyright © 2011-2022 走看看