基础练习 十六进制转十进制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
思路一:直接用hex和dec,但在蓝桥杯测评里得不了满分
程序如下:
#include <iostream>
using namespace std;
int main()
{
unsigned int num;
cin >>(hex)>>num;
cout<<(dec)<<num<<endl;
return 0;
}
程序如下:
#include <iostream>
#include <cmath>
using namespace std;
//函数:int Exchange(char ch)
//功能:将十六进制字符转化为十进制数
//输入:十六进制字符
//输出:十六进制字符对应的十进制数
int Exchange(char ch)
{
if(ch < 'A')
{
return (int)(ch - '0');
}
else
{
return (int)(ch - '7');
}
}
int main()
{
string exp;//记录输入的十六进制字符串
cin >> exp;
int len = exp.length();//记录字符串长度
unsigned int sum = 0;
for(int i = 0;i < len;i++)
{
sum += (Exchange(exp[i]))*pow(16,len - i - 1);
}
cout<<sum<<endl;
return 0;
}
注意:注意范围,八个十六进制数至少要用unsigned int 类型的十进制数来表示