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;
    }
  • 相关阅读:
    Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结
    zookeeper Eclipse 开发环境搭建及简单示例
    PHP语言基础之MySql 05 By ACReaper
    【读书笔记】并发编程需要注意的几个典型问题
    Eclipse安装SVN
    html学习
    某浪PHP面试题及答案优化
    《卡特教练》观后感
    [Usaco2006 Nov]Roadblocks第二短路
    std::vector 两种操作的比较
  • 原文地址:https://www.cnblogs.com/shubin/p/6877069.html
Copyright © 2011-2022 走看看