藍橋杯備戰 十六進製制轉換為八進位制

2021-06-26 04:05:46 字數 1218 閱讀 5165

十六進製制:0~9,a~f

八進位制:0~7

十六進製制轉為八進位制的演算法思想:

(1)總的思路:先將十六進製制轉換為二進位制,再將二進位制轉換為八進位制

(2)十六進製制轉換為二進位制的方法

用列舉法:switch一一列出對應的值,如:十六進製制有16種可能0~9,a~f對應二進位制的值;

輸入的數字可以以字串的形式存在,因為字串方便取元素,如該字串 string a 輸入123  ,想取第二個字元,則用這種方式a[2-1],則會輸出2,這樣就可以對                 應帶switch裡的值。

(3)二進位制轉換為八進位制

取三位數,不夠的補0.將每個ascii值化為數字的思路:例如有乙個ascii值存在陣列a[i]中,轉換形式是:a[i]-'0',然後在按421化為八進位制

注意處理:前面為0是去掉,可以利用做標籤處理

題目:問題描述

給定n個十六進製制正整數,輸出它們對應的八進位制數。

輸入格式

輸入的第一行為乙個正整數n (1<=n<=10)。

接下來n行,每行乙個由0~9、大寫字母a~f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。

輸出格式

輸出n行,每行為輸入對應的八進位制正整數。

注意輸入的十六進製制數不會有前導0,比如012a。

輸出的八進位制數也不能有前導0。

樣例輸入239

123abc

樣例輸出

714435274

提示先將十六進製制數轉換成某進製數,再由某進製數轉換成八進位制。

思路:將十六進製制轉換為二進位制,再將二進位制轉換為八進位制;其中由題意用到flag做標記,它的作用是將乙個事件的初始狀態標記為0;當事件發生變化時,標記為1,然後利用該標記判斷        事件的變化,以便方便處理該事件下一步;

**如下:

#include

#include

using namespace std;  

int main()  

{  int n;  

cin>>n;  

for(int k=1;k<=n;k++)  

{  string s1,s2;//s1為輸入的原始的十六進製制串,s2為轉化成的二進位制串  

cin>>s1;  

s2="";//初始化  

for(int i=0;i**是借鑑別人的,思路是自己總結的,希望對自己和與自己一樣的夥伴有幫助!

藍橋杯 十六進製制轉換為八進位制

要求 輸入長度不超過100000的幾個十六進製制,將其轉換為八進位制。最簡單的做法,將十六進製制轉化為二進位制的bcd碼,然後再將bcd碼轉換為八進位制。注意十六轉bcd一位十六進製制對四位二進位制,bcd轉八進位制三位二進位制對一位八進位制。這裡用了二維陣列。include include inc...

十六進製制轉換為八進位制 藍橋

問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由09 大寫字母af組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格式 輸出n行,每行為輸入對應的八進位制正整數。注意 輸入的...

準備藍橋杯 dyx 十六進製制轉換八進位制

問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由0 9 大寫字母a f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格式 輸出n行,每行為輸入對應的八進位制正整數。注意輸入...