• 进制转换


    #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;
    }
  • 相关阅读:
    MySQL for mac使用记录
    Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
    前端学数据库之基础操作
    前端CSS预处理器Sass
    ionic + cordova+angularJs 搭建的H5 App完整版总结
    HTML5的新语义化的标签
    angularJS- $http请求
    SEO优化---学会建立高转化率的网站关键词库
    当AngularJS POST方法碰上PHP
    从一个程序员的角度看——微信小应用
  • 原文地址:https://www.cnblogs.com/shubin/p/6877069.html
Copyright © 2020-2023  润新知