列表

详情


HJ5. 进制转换

描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围:保证结果在

输入描述

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

输出描述

输出该数值的十进制字符串。不同组的测试用例用\n隔开。

示例1

输入:

0xAA

输出:

170

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 1ms, 内存消耗: 256KB, 提交时间: 2020-07-06

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    char str[100];
    int i=0,count,sum;
    while(gets(str))//用于多次输入
    {
        count=strlen(str);//计算字符串的长度
        sum=0;
        for(i=count-1;i>=0;i--)//从十六进制个位开始,每位都转换成十进制
        {
        if(str[i]>='0'&&str[i]<='9')//数字字符的转换
        {
            sum+=(str[i]-48)*pow(16,count-i-1);
        }
        else if(str[i]>='A'&&str[i]<='F')//字母字符的转换
        {
            sum+=(str[i]-55)*pow(16,count-i-1);
        }
        }
        printf("%d\n",sum);
    }
    return 0;
 }

Pascal 解法, 执行用时: 1ms, 内存消耗: 256KB, 提交时间: 2020-02-29

    function HexToDec(AHex: string): Integer;
        function HexPower(ATime: Integer): Integer;
        var
            i: Integer;
        begin
            Result := 1;
            for i := 1 to ATime do
                Result := Result * 16; 
        end;
    var
        i, iTemp: Integer;
    begin
        Result := 0;
        for i := length(AHex) downto 3 do
        begin
            if AHex[i] = '0' then Continue
            else
            begin
                if AHex[i] in ['A'..'F'] then 
					iTemp := 10 + ord(AHex[i]) - ord('A')
      			else iTemp := ord(AHex[i]) - ord('0');
                Result := Result + HexPower(length(AHex) - i) * iTemp;
            end;
        end;
    end;
var
    sHex: string;
begin
    while not Eof do
    begin
        readln(sHex);
        writeln(HexToDec(sHex));
    end;
end.

上一题