十六進製制: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行,每行為輸入對應的八進位制正整數。注意輸入...