华为机试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:进制转换的主要内容,如果未能解决你的问题,请参考以下文章