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; }