1. 程式人生 > >藍橋杯題解-十六進位制轉十進位制-BASIC-11

藍橋杯題解-十六進位制轉十進位制-BASIC-11

原題地址:十六進位制轉十進位制

問題描述

從鍵盤輸入一個不超過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; }

題解目錄