十六进制转十进制
题目描述
输入一个十六进制数,输出相应的十进制数。
十六进制的基数是0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f。
输入
输入有若干行,每行表示一个十六进制的数。
输出
输出每个十六进制数对应的十进制数。
样例输入 Copy
a1
1a
110
样例输出 Copy
161
26
272
没事做做水题,直接看代码:
#include <iostream>
#include <cstring>
using namespace std;
int mi(int n){
int x=1;
for(int i=0;i<n;i++){
x=x*16;
}
return x;
}
int main() {
char a[16] = {'0','1','2','3','4','5','6','7','8','9'
,'a','b','c','d','e','f'
};
char x[1000];
int len,res,k;
while(scanf("%s",&x)!=EOF){
len = strlen(x);
res=0; //10
k=len;
for(int i=0;i<len;i++){
for(int j=0;j<16;j++){
if(a[j]==x[i]){
res+=j*mi(k-1);
//cout<<res<<' '<<j<<' '<<mi(k-1)<<' '<<k<<' '<<endl;
k--;
}
}
}
cout<<res<<endl;
}
return 0;
}