面試題-華爲-進制轉換-3

熬夜把第三個面試題做了,16進制轉換乘10進制,依然是華爲面試的題目,在此把自己做的一點成果分享給大家。

該面試編程題來自於牛客網,本人分享在此僅供大家學習與交流用,不擔負任何法律責任。博文版權歸博主所有,轉載需註明出處。

問題描述

寫出一個程序,接受一個十六進制的數值字符串,輸出該數值的十進制字符串。(多組同時輸入 )

輸入描述:

輸入一個十六進制的數值字符串。

輸出描述:

輸出該數值的十進制字符串

輸入例子:

0xA

輸出例子

10

思路與解答

題目比較簡單,如果各位看官有問題請直接百度。

程序代碼

//十六進制與十進制轉換
#include <iostream>
#include <string>
#include <math.h>

using namespace std;
const int N = 100;

//過濾十六進制前的‘0x’
string get_string()
{
    string input;
    cin >> input;
    return input.substr(2,input.length());//注意子串的位置從2開始,不是1
}

int ch_to_num(char c)
{
    switch(c)
    {
        case '0':
            return 0;
        case '1':
            return 1;
        case '2':
            return 2;
        case '3':
            return 3;
        case '4':
            return 4;
        case '5':
            return 5;
        case '6':
            return 6;
        case '7':
            return 7;
        case '8':
            return 8;
        case '9':
            return 9;
        case 'a':
            return 10;
        case 'b':
            return 11;
        case 'c':
            return 12;
        case 'd':
            return 13;
        case 'e':
            return 14;
        case 'f':
            return 15;
        default:
            return 0;
    }
}

int main()
{
    int str_len =0,a[N],sum=0;
    string input = get_string();
    str_len = input.length();

    for(int i =0;i<str_len;i++)
    {
       a[i] = ch_to_num(tolower(input[i]));//大寫轉小寫
    }
    for(int i = 0;i <str_len;i++)
    {
        //每一位的數字乘與16^(位數-1)
        sum += a[i]*pow(16,double(str_len-i-1));
    }
    cout << sum<<endl;
    return 0;
}
發佈了24 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章