題目描述
寫出一個程序,接受一個十六進制的數,輸出該數值的十進制表示。(多組同時輸入 )
輸入描述:
輸入一個十六進制的數值字符串。
輸出描述:
輸出該數值的十進制字符串。ide
解法(C語言版):rest
#include<stdio.h> #include<math.h> int hex2dec(char hex) { if(hex >= '0' && hex <= '9') return hex - '0'; else if(hex >= 'A' && hex <= 'F') return hex - 55; else return -1; } char *dec2str(int dec) { int i, j; char str[100] = {0}; char restr[100] = {0}; i = 0; do { restr[i++] = dec % 10 + '0'; dec /= 10; }while(dec); j = 0; i = i - 1; while(i >= 0) str[j++] = restr[i--]; return str; } int main() { char instr[100] = {0}; int len, dec, tmp, i, j; while(gets(instr)) { dec = 0; len = strlen(instr); for(i = len - 1, j = 0; i > 1; --i, ++j) { tmp = hex2dec(instr[i]); dec += tmp * pow(16, j); } printf("%s\n", dec2str(dec)); memset(instr, 0, 100); } return 0; }