试题描述:写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
C语言解法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
void convert16to10(char* str, int len)
{
long sum = 0;
int i = 0;
for(i = len-1; i>=0; i--)
{
if((str[i] <= '9') && (str[i] >= '0'))
{
sum = sum + (str[i] - 48) * pow(16, len-i-1);
}
else if((str[i] <= 'F') && (str[i] >= 'A'))
{
sum = sum + (str[i] - 55) * pow(16, len-i-1);
}
}
char num[100];
itoa(sum, num, 10);
//printf("%ld\n", sum);
printf("%s\n", num);
}
int main()
{
char str[100];
while(gets(str))
{
int len = strlen(str);
convert16to10(str, len);
}
return 0;
}