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.