试题 基础练习 十六进制转十进制
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
#include<stdio.h>
#include<string.h>
int main()
{
char a[10];int i;long long bei=1,sum=0;
gets(a);
int n=strlen(a);
for(i=n-1;i>=0;i--)
{
switch(a[i])
{
case '0':sum+=0; break;
case '1': sum+=1*bei;break;
case '2': sum+=2*bei;break;
case '3': sum+=3*bei;break;
case '4': sum+=4*bei;break;
case '5': sum+=5*bei;break;
case '6': sum+=6*bei;break;
case '7': sum+=7*bei;break;
case '8': sum+=8*bei;break;
case '9': sum+=9*bei;break;
case 'A': sum+=10*bei;break;
case 'B': sum+=11 *bei;break;
case 'C': sum+=12*bei;break;
case 'D': sum+=13*bei;break;
case 'E': sum+=14*bei;break;
case 'F': sum+=15*bei;break;
}
bei*=16;
}
printf("%lld",sum);
return 0;
}
从右往左按16倍率递增即可,每进一位等于乘以16。