此解法为天下最笨的解法,不过自己想出来还是很高兴的
#include<iostream>
#include<string>
#include<set>
#include<math.h>
using namespace std;
set<char> r;//此字符集存储字符'0'~'9';
void zh(string s)
{
r.insert('0');
r.insert('1');
r.insert('2');
r.insert('3');
r.insert('4');
r.insert('5');
r.insert('6');
r.insert('7');
r.insert('8');
r.insert('9');
int res=0;
for(int i=s.size()-1;i>=2;i--)
{
int temp;
if(r.find(s[i])!=r.end())//s[i]是0~9
{
temp=(int)s[i]-48;//'0'转换为int是48
}
else
{
temp=(int)s[i]-55;//'A'转换为int是65
}
if(s.size()-i-1==0)
{
res+=temp;
}
else
{
res+=temp*pow(16,(s.size()-i-1));//pow(x,n)计算x的n次方
}
}
cout<<res<<endl;
}
int main()
{
string s;
while(cin>>s)
{
zh(s);
}
return 0;
} 
京公网安备 11010502036488号