美文网首页
进制转换——2. 数制转换

进制转换——2. 数制转换

作者: 辘轳鹿鹿 | 来源:发表于2020-06-26 17:13 被阅读0次

北京大学复试数制转换问题

题目描述

求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

输入描述:

输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。
数据可能存在包含前导零的情况。

输出描述:

可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。

示例1

输入

15 Aab3 7

输出

210306

解题思路:

  • 先转为十进制,再转为其他进制
  • 将要用到的字符串长度赋给一个单独的变量,防止用strlen(str)时,因为变动了一个字符,导致strlen(str)发生变化。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int c2n(char c){
    if(c>='A'&&c<='Z'){
        return c-'A'+10;
    }
    else if(c>='a'&&c<='z'){
        return c-'a'+10;
    }
    else{
        return c-'0';
    }
}

char n2c(int c){
    if(c<=9){
        return c+'0';
    }
    else{
        return c+'A'-10;
    }
}

int main(){

    int m,n,len,i,na;
    long long int num,tmp;
    char array[100];
    while(scanf("%d %s %d",&m,array,&n)!=EOF){
        num=0;
        na=strlen(array);

        for(i=0;i<na;i++){
            array[i]=c2n(array[i]);
             num=num+array[i];

        if(i<na-1){
            num=num*m;}


        }

        if(num==0){
            printf("%lld\n",num);
            continue;
        }

        len=0;
        while(num!=0){
            array[len]=num%n;
            num=num/n;
            len++;
        }

        for(i=len-1;i>=0;i--)
        {

            array[i]=n2c(array[i]);
            printf("%c",array[i]);
        }
        printf("\n");
    }

    return 0;

}


相关文章

  • 进制转换——2. 数制转换

    北京大学复试数制转换问题 题目描述 求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表...

  • 数制及数据转换

    1.对应关系表: 2.不同数制间的数据转换 (1)转换成十进制 (2)二进制数、八进制数和十六进制数之间的转换 八...

  • 第一章出题

    数制的转换(我们经常做整数的数制转换,对小数的数制转换可能有点儿陌生。) 23.125的二进制为() 答案:1...

  • 关于进制和进制转换的那些事

    要理解进制和进制转换,首先需要理解数制系统。 数制系统包括:(计算机中常用的数制系统) – 十进制数制系统(逢十进...

  • 一.计算机系统构成及硬件基础知识--数制转换

    数制转换: 一.十进制转换为二进制 二,二进制转十进制 三. 二进制与八进制之间的转换 四. 八进制转成二进制 五...

  • 数字逻辑之数制转换

    一.数制转换 1.按权展开式求任意进制 2.任意进制转十位数 2.1 二进制转十进制 逐位加...

  • 2019软考[嵌入式系统设计师]大纲

    考试科目1:嵌入式系统基础知识 1.计算机科学基础 1.1数制及转换 ·二进制、八进制、十进制和十六进制等常用数制...

  • 顺序栈的应用一:数制转换

    数制转换 十进制数N与其他d进制的转换一个简单的算法是:N = (N/d)*d + N%d对应代码: 最后将栈内的...

  • 考试大纲

    考试科目1:计算机与网络基础知识1.计算机科学基础1.1数制及其转换·二进制、十进制和十六进制等常用数制及其相互转...

  • 数制转换

网友评论

      本文标题:进制转换——2. 数制转换

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