藍橋杯題解-十六進位制轉十進位制-BASIC-11
阿新 • • 發佈:2019-01-14
原題地址:十六進位制轉十進位制
問題描述
從鍵盤輸入一個不超過8位的正的十六進位制數字符串,將它轉換為正的十進位制數後輸出。
注:十六進位制數中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。
樣例輸入
FFFF
樣例輸出
65535
解:
1.按位乘以對應的權值,並相加。
2.一個字元一個字元獲取,可用string,也方便像陣列一樣使用下標。(length是獲取string位數)
3.用ASCII碼區分為兩部分,分開減。
注:下標和16的次方不相同
程式碼:
#include"iostream"
#include "string"
#include"cmath"
using namespace std;
int main()
{
string s;
long long a=0;//初始化
getline(cin,s);
for(int i=(s.length()-1),j=0;i>=0;j++,i--)
{
if(int(s[i])>=65) //字母時
a+=(int(s[i])-55)*pow(16.0,j);
else//1-9時
a+=(int(s[i])-48)*pow(16.0,j);
}
cout<<a;
return 0;
}