此解法为天下最笨的解法,不过自己想出来还是很高兴的
#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; }