"蓝桥杯“基础练习: 十六进制转十进制
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
本题也有陷阱,也是出在数据范围上,不超过8位的十六进制数,FFFFFFFF这个数就不行,所以计算16次方的那个函数返回值要用long long类型的。
代码:
#include <iostream> #include <string> #include <algorithm> using namespace std; long long mul(int n)//要用long long类型 { long long s=1; for(int i=1;i<=n;i++) s*=16; return s; } int main() { long long a=0; string str; cin>>str; reverse(str.begin(),str.end()); for(int i=0;i<str.length();++i) { int temp; if(str[i]>='0'&&str[i]<='9') temp=str[i]-'0'; else temp=str[i]-55; a+=(temp*mul(i)); } cout<<a; return 0; }
运行: