蓝桥杯试题 基础练习 十六进制转十进制 C/C++实现
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
解题思路
- 题目说是一个不超过8位的正十六进制数字符串,也就是说我们可以直接用数来存储结果。
- 然后就可以按照正常的进制转化,即将每一位数乘以相应的16次幂,然后结果相加即可。
代码
#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
long long num=0;
int main(){
char str[10];
cin>>str;
int l=strlen(str);
//i是对应的幂,j是数的下标
for(int i=l-1,j=0;i>=0;i--,j++){
//对数字和字母分别做特殊处理
if(isdigit(str[j])) num+=pow(16,i)*(str[j]-'0');
else num+=pow(16,i)*(str[j]-'A'+10);
}
cout<<num;
return 0;
}
最后,有不对的地方欢迎大家指正。有疑问的,可以评论或私信作者,本人尽力解答OvO
3383

被折叠的 条评论
为什么被折叠?



