华为机试题分析 5 进制转换

Posted CodeAllen2022

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试题分析 5 进制转换相关的知识,希望对你有一定的参考价值。

描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围:保证结果在 1 \\le n \\le 2^31-1 \\1≤n≤231−1 

输入描述:

输入一个十六进制的数值字符串。

输出描述:

输出该数值的十进制字符串。不同组的测试用例用\\n隔开。

示例1

输入:0xAA

输出:170


这题用C语言的小伙伴一看到可能会有点蒙,这还需要算法逻辑?直接输出不就完啦,是的,这就是C语言最简单的思路

#include <stdio.h>
#include <string.h>

int main()

    int num = 0;
    
    while(scanf("%i\\n", &num) != -1) 
        printf("%d\\n", num);
    
    
    return 0;

但是这题的目的肯定还是想考察对于字符串的处理

#include<stdio.h>
#include<string.h>

int main() 
    char a[1000];
    scanf("%s", a);
    int i = 0, n = 0, sum = 0;
    int len = strlen(a);

    for (i = 2; i < len; i++) 
        if (a[i] >= '0' && a[i] <= '9') 
            n = a[i] - '0';
         else if (a[i] >= 'A' && a[i] <= 'F') 
            n = a[i] - 'A' + 10;
        
        sum = sum * 16 + n;
    
    printf("%d", sum);

    return 0;

以上是关于华为机试题分析 5 进制转换的主要内容,如果未能解决你的问题,请参考以下文章

华为机试HJ5:进制转换

华为机试题分析-C/C++知识点分类总结

华为机试题 HJ33整数与IP地址间的转换

华为机试题 HJ33整数与IP地址间的转换

华为机试:进制转换

华为OD机试题,用 Java 解N 进制减法问题