蓝桥 基础练习 十六进制转十进制
题目:
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
个人代码:
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
/* 十六进制转化为十进制 */
int main() {
//输入十六进制数
char n[8];
scanf("%s",&n);
int i,len=0;
int stt[8];//转化完的十六进制
for(i=0;i<8;i++){
switch(n[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;
}
}
//进行十六进制转化为十进制
int indext = len;
double sum=0 ;
for(i=0;i<len;i++){
sum+=stt[i]*pow(16,indext-1);
indext--;
}
printf("%0.f\n",sum);
return 0;
}