问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
不知道为什么在VS平台运行出来,测试了5个结果都是正确的,但是在蓝桥杯平台会被报错。
可能是因为“不超过8位"的原因? 有待改善,先吃饭了好饿!
在这里插入代码片
#include <iostream>
#include <string>
#include<math.h>
using namespace std;
int main() {
string s1;
int temp = 0;//用于存字母转换成的十进制数
long long an=0;//answer
cin >> s1;
int num = s1.length();
for (int i = 0; i < num; i++)
{
switch (s1[i])
{
case 'A':temp = 10; break;
case 'B':temp = 11; break;
case 'C':temp = 12; break;
case 'D':temp = 13; break;
case 'E':temp = 14; break;
case 'F':temp = 15; break;
default:temp = s1[i] - '0'; break;
}
an = an + (temp * pow(16, num - 1 - i));
}
cout << an;
return 0;
}