基础练习 十六进制转十进制
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
#include<stdio.h>
#include<math.h>
int main()
{
double sum=0;
int i,index;
int len=0;
char st[8];
int stt[8];
scanf("%s",st);
for(i=0;i<8;i++)
{
switch(st[i])
{
case '0':
stt[len++]=0;
break;
case '1':
stt[len++]=1;
break;
case '2':
stt[len++]=2;
break;
case '3':
stt[len++]=3;
break;
case '4':
stt[len++]=4;
break;
case '5':
stt[len++]=5;
break;
case '6':
stt[len++]=6;
break;
case '7':
stt[len++]=7;
break;
case '8':
stt[len++]=8;
break;
case '9':
stt[len++]=9;
break;
case 'A':
stt[len++]=10;
break;
case 'B':
stt[len++]=11;
break;
case 'C':
stt[len++]=12;
break;
case 'D':
stt[len++]=13;
break;
case 'E':
stt[len++]=14;
break;
case 'F':
stt[len++]=15;
break;
case 'a':
stt[len++]=10;
break;
case 'b':
stt[len++]=11;
break;
case 'c':
stt[len++]=12;
break;
case 'd':
stt[len++]=13;
break;
case 'e':
stt[len++]=14;
break;
case 'f':
stt[len++]=15;
break;
}
}
index=len;
for(i=0;i<len;i++)
{
sum+=stt[i]*pow(16,index-1);
index--;
}
printf("%.0lf\n",sum);
return 0;
}