华为研发笔试(十六进制转10进制)

xiaoxiao2021-02-28  23

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

输入描述:

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

输出描述:

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

输入例子1:
0xA
输出例子1:
10

#include<iostream> #include<string> #include<math.h> using namespace std; int main() { string in; while (cin >> in){ string ox = "123456789ABCDEF"; double out = 0; int len = in.length(); for (int i = len - 1; i >=2; i--){ int index = ox.find(in[i]); double m = pow(16, len -1- i); out += m* (index + 1); } cout << out << endl; } return 0; }

注意:

1、if for 等后面括号里面的内容一定要看好,不能写错,i--不能写成i++

2、进制转换,字符串与整数的转换再看看

int hex_char_value(char c) { if(c >= '0' && c <= '9') return c - '0'; else if(c >= 'a' && c <= 'f') return (c - 'a' + 10); else if(c >= 'A' && c <= 'F') return (c - 'A' + 10); assert(0); return 0; } int hex_to_decimal(const char* szHex, int len) { int result = 0; for(int i = 0; i < len; i++) { result += (int)pow((float)16, (int)len-i-1) * hex_char_value(szHex[i]); } return result; }
转载请注明原文地址: https://www.6miu.com/read-2629979.html

最新回复(0)