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;
    }
  • 相关阅读:
    easyui改变tab标题
    java获取request中的参数、java解析URL问号后的参数
    java生成word文档
    jquery即时获取上传文件input file文件名
    微信公众号开发(三)
    Linux中文乱码 更改Linux字符集
    微信公众号开发(五)
    NSCache
    MIT神技术绘制用户界面至任意物体
    导弹工厂到摩托车间:制造业如何应用大数据
  • 原文地址:https://www.cnblogs.com/shubin/p/6877069.html
Copyright © 2011-2022 走看看