华为机试HJ5:进制转换

Posted 翟天保Steven

tags:

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

题目描述:

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

输入描述:

输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据。

输出描述:

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

示例:

输入:

0xA 0xAA

输出:

10 170

解题思路:

取巧的办法直接以cin和cout自带的功能,16进制读取,10进制输出;硬解的话,就是用十进制和十六进制的转换关系式做了。

测试代码:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int input;
    // cin>>hex输入的是16进制的,输出为10进制的,直接搞定
    while(cin>>hex>>input)
    {
        cout<<input<<endl;
    }
    return 0;
}

硬解的做法

#include<iostream>
#include<string>
#include<cmath>
using namespace std;
 int main()
 {
     string s;
     while(cin>>s)
     {
         int bit=0;
         int ans =0;
         for(int i=s.length()-1;i>1;i--)
         {
             if(s[i]>='0'&&s[i]<='9')
                 ans+=(s[i]-'0')*pow(16,bit++);
             else if(s[i]>='A'&&s[i]<='F')
                 ans+=(s[i]-'A'+10)*pow(16,bit++);
         }
         cout<<ans<<endl;
     }
     return 0;
 }

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

牛客刷题HJ5 进制转换

Java解 | #HJ5十六进制转换#

华为机试:进制转换

华为机试练习进制转换

华为python机试题目:计算字符个数简单错误记录简单密码进制转换句子逆序密码验证合格程序

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