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;
    }
  • 相关阅读:
    ubuntu video and audio
    js type
    jumpserver 堡垒机环境搭建
    ubuntu dnsmasq
    bind--dns-docker---[nslookup/dig]
    java maven scope compile,provide,system,test,runtime
    docker install and minikube install
    nginx break-circus orange api-gateway
    一个IP能建立的最大连接数是多少?
    Docker 在6.4上安装
  • 原文地址:https://www.cnblogs.com/shubin/p/6877069.html
Copyright © 2011-2022 走看看