美文网首页
2019-05-11(栈的运用 进制转换)

2019-05-11(栈的运用 进制转换)

作者: 常人 | 来源:发表于2019-05-12 10:11 被阅读0次

    1、数制转换

    十进制 十六进制  八进制 二进制 之间转换 的思路 
    
    十进制转化为8进制 课本实例:
    1、思路是通过取证、取余两种运算+栈对取余结果进行保存。
    2、具体逻辑:(N div d)*d + N mod n" 因为计算过程中 从低位到高位产生八进制的各位数位,而计算的时候是从高位开始的 ,二者之间是相反的。"
    

    数据结构只需要写出基本逻辑的轮廓:具体的一些细节的实现 看 题目考察的重点 :这个考察点显然不是考察 栈的实现逻辑
    而是考察 怎么将数据进行进制的转换。

    void conversion( )
    {
    InitStack(&S);"构造空栈"
    sacnf("%d",n);
    while(n){
    push(&S,n%8);
    n = n/8;
    }
    while(!StackEmpty(S){
    pop(S,e);
    printf("%d",e);
    }
    }
    
    如果是十六进制转化为二进制呢?

    思路:将每位十六进制的树切分成单个树,分别转化为十进制 再将十进制转化为分别四位二进制 。拼接起来
    如何实现编码?

    void conversion16_2(){
    scanf(%x,m);
    
    
    }
    
    

    参考:https://blog.csdn.net/zhangjianjun521/article/details/79081435

    "采用 char指针 指向String 类型的字符串的地址,方便根据字符串根据每个索引进行遍历"
    "strlen()库函数 :函数用来统计 字符串的长度"
    对没每个索引下保存的十六进制的值 根据选择语句(if else)将其转化为十进制;

    #include <stdio.h>
    #include <string.h>
     
    /* 十六进制数转换为十进制数 */
    long hexToDec(char *source);
     
    /* 返回ch字符在sign数组中的序号 */
    int getIndexOfSigns(char ch);
     
    int main()
    {
        char *hex = "75BCD15";  "采用 char指针 指向String 类型的字符串的地址,方便根据字符串根据每个索引进行遍历"
     
        printf("16进制数:\t%s\n", hex);
        printf("10进制数:\t%ld\n", hexToDec(hex));
     
        return 0;
    }
     
    /* 十六进制数转换为十进制数 */
    long hexToDec(char *source)
    {
        long sum = 0;
        long t = 1;
        int i, len;
     
        len = strlen(source); "strlen()库函数 :函数用来统计 字符串的长度"
        for(i=len-1; i>=0; i--)
        {
            sum += t * getIndexOfSigns(*(source + i));
            t *= 16;
        }  
     
        return sum;
    }
    
    /* 返回ch字符在sign数组中的序号 */
    int getIndexOfSigns(char ch)
    {
        if(ch >= '0' && ch <= '9')
        {
            return ch - '0';
        }
        if(ch >= 'A' && ch <='F') 
        {
            return ch - 'A' + 10;
        }
        if(ch >= 'a' && ch <= 'f')
        {
            return ch - 'a' + 10;
        }
        return -1;
    }
    
    二进制转化为十六进制??

    2、括号匹配的检验

    相关文章

      网友评论

          本文标题:2019-05-11(栈的运用 进制转换)

          本文链接:https://www.haomeiwen.com/subject/bjcfaqtx.html