C++的一种思路比较清晰的解法
#include<iostream>
#include<math.h>
#include<string.h>
using namespace std;
int main()
{
int n=0,i=0;
int temp=0,sum=0;
char* arr = new char[20]; //要给‘\0’留一位
while(cin.getline(arr,20))
{
n = strlen(arr); //计算字符串长度
for (i= 2;arr[i]!='\0';i++) //最后一位是'\0',不用算进去
{
switch (arr[i])
{
case 'A': temp = 10; break;//字符转整形
case 'B': temp = 11; break;
case 'C': temp = 12; break;
case 'D': temp = 13; break;
case 'E': temp = 14; break;
case 'F': temp = 15; break;
default: temp = arr[i]-'0'; break;
}
sum = sum + temp * pow(16, n - 1- i);//从16进制的高位转化为10进制的公式
}
cout << sum <<endl;
sum=0;//输出后清零
}
return 0;
} 
京公网安备 11010502036488号