您的位置:首页 > 编程语言 > C语言/C++

牛客网_华为机试_005_进制转换

2017-07-06 01:05 232 查看


题目描述

写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )

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


输出描述:
输出该数值的十进制字符串。


示例1

输入

0xA


输出

10


题目地址:https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6?tpId=37&tqId=21228&tPage=1&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking

思路一:读入字符串,从第三位(0x之后)开始遍历字符串到结束,数字0~9 转换为数字,字母A~F转化为数字,根据位数判断该位的权值指数

#include <string>
#include <iostream>
using namespace std;

int trans16to10(string str0x)
{
int result = 0;
int n = str0x.size() - 3;
for (int i = 2; i < str0x.size(); i++)
{
char c = str0x[i];
int num = 0;
if ('0' <= c && c <= '9')
{
num = c - 48;
}
if ('A' <= c && c <= 'F')
{
num = 10 + (c - 'A');
}
for (int j = 0; j < n; j++)
{
num *= 16;
}
n--;
result += num;
}
return result;
}

int main()
{
string str0x;
while(cin >> str0x)
cout << trans16to10(str0x) << endl;

return 0;
}


思路二:常人无法理解

链接:https://www.nowcoder.com/questionTerminal/8f3df50d2b9043208c5eed283d1d4da6
来源:牛客网

#include <iostream>
using namespace std;

int main()
{
int a;
while(cin>>hex>>a){
cout<<a<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 华为