2019.04.01水题一:将十六进制数转换成十进制数:Input: 第一行有一个整数T,表示共有T组数据 接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中的a-f均为大写字母,数前没有多余的0 。 Output :输出共T行,每一行是一组数据的十进制表示,数字前不得有多余的0。 十进制数小于2^31。Sample Input 4 A F FFFE 10001 Sample Output 10 15 65534 65537

#include <iostream>
#include <string>
#include <string.h>
#include <math.h>
using namespace std;
int main(){
    int n;
    int k;
    int sum = 0;
    char s[10];
    cin >> n;
    for (int i = 0; i < n; i++){
        cin >> s;
        k = strlen(s);
        for (int j = 0; j < k; j++){
            if (s[j] >= 'A'&&s[j] <= 'F'){
                s[j] = s[j] - 55;
            }
            else if (s[j] >= '0'&&s[j] <= '9'){
                s[j] = s[j] - 48;
            }
            sum += (s[j] * pow(16, k - j - 1));
        }
        cout << sum << endl;
        sum = 0;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/jianqiao123/p/10639918.html