蓝桥杯试题 基础练习 十六进制转十进制

蓝桥杯试题 基础练习 十六进制转十进制 C/C++实现

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

解题思路

  • 题目说是一个不超过8位的正十六进制数字符串,也就是说我们可以直接用数来存储结果。
  • 然后就可以按照正常的进制转化,即将每一位数乘以相应的16次幂,然后结果相加即可。

代码

#include
#include
#include
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

你可能感兴趣的:(蓝桥杯试题,蓝桥杯,c++,职场和发展)