十六进制转十进制 (蓝桥杯,基础练习)

2019-04-14 08:44发布

问题描述   从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 本题需要将十六进制的数展开 之后进行计算 #include #include #include #include using namespace std; int main() { char a[8]; int b[10]={0}; int n,i; long long int sum=0; gets(a); n=strlen(a);//计算十六进制的数的长度 for(i=n-1;i>=0;i--) { if(a[i]=='0')b[i]=0; if(a[i]=='1')b[i]=1; if(a[i]=='2')b[i]=2; if(a[i]=='3')b[i]=3; if(a[i]=='4')b[i]=4; if(a[i]=='5')b[i]=5; if(a[i]=='6')b[i]=6; if(a[i]=='7')b[i]=7; if(a[i]=='8')b[i]=8; if(a[i]=='9')b[i]=9; if(a[i]=='A')b[i]=10; if(a[i]=='B')b[i]=11; if(a[i]=='C')b[i]=12; if(a[i]=='D')b[i]=13; if(a[i]=='E')b[i]=14; if(a[i]=='F')b[i]=15; } for(i=0;i<=n-1;i++) { sum=b[i]*pow(16,n-1-i)+sum; } printf("%lld ",sum); return 0; }