六進製制,八進位制,二進位制,十進位制之間的轉換是最基本的能力,但有些題目對於新手來說有點難以理解,我拿出一道題來拓展的講一講。
進製轉換方法:
1、二進位制轉八進位制——取每三位按權相加。
2、二進位制轉十六進製制—取每四位按權相加。
3、二進位制轉十進位制——按權相加。
4、八進位制轉二進位制——熟練掌握二進位制轉換,做到看到乙個數直
接寫它的二進位制數,再將二進位制相連線,不足三位補0,去前導
0。6、十六進製制轉二進位制—同八進位制,注意不足四位補0,去前導0.
7、十進位制轉八進位制——除八取餘。
8、十進位制轉十六進製制—除十六取餘。
9、十六進製制和八進位制轉十進位制通過二進位制轉換。
給定n個十六進製制正整數,輸出它們對應的八進位制數。
輸入的第一行為乙個正整數n (1<=n<=10)。接下來n行,每行乙個由0~~9、大寫字母a~f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。
輸出n行,每行為輸入對應的八進位制正整數。【注意】
輸入的十六進製制數不會有前導0,比如012a。
輸出的八進位制數也不能有前導0。
239123abc
71轉換進製最簡單的方法是使用"iostream"庫函式下的格式控制符dec、hex、oct。4435274
#include
using namespace std;
intmain()
評測一看:錯誤。回頭一看,100000位十六進製制,還是老老實實打吧。
有兩條路可以走,字串和陣列。我第一感覺字串想起來簡單,直接下手字串。
string sixteen;
cin>>sixteen;
string tow;
string eight;
首先是十六進製制轉二進位制,我原來打的有點煩了。這是網上傳的比較廣的乙個方法,
for
(int j=
0; jlength()
; j++
)}
二進位制轉八進位制是從右往左每3位按權相加,不足補0。所以我們在轉換之前先要確保它是3的整除數。
if
(tow.
length()
%3==1
)//1
tow=
"00"
+tow;
//001
if(tow.
length()
%3==2
) tow=
"0"+tow;
因為要確保不能存在前導0,所以我們拿出前三個來判斷他們相加是不是等於0,即他們三個等不等於0:
if(!
(tow[0]
=='0'
&&tow[1]
=='0'
&&tow[2]
=='0'))
『10』+5, 即『10』的ascll碼加上5, 即『15』的ascll碼
如果我是char temp=15,那就是ascll碼為15的值。
然後對後面的進行轉換:
for
(int j=
3; jlength()
; j+=3
)
tow[j]是乙個字元型,它減去『0』實際上就是它的ascll碼值減去『0』的ascll碼值,作為數字的它,即等於它的整數型。
也可以用一種更可觀的方式,就是碼字要多了點:
for
(int j=
3; jlength()
; j+=3
)
這是我做的完整的**,一開始我以為是輸入完十六進製制後再一起輸出八進位制,後來發現輸入乙個輸出乙個和一起輸入一起輸出都是對的。
#include
using namespace std;
intmain()
}if(tow.
length()
%3==1
) tow=
"00"
+tow;
if(tow.
length()
%3==2
) tow=
"0"+tow;if(
!(tow[0]
=='0'
&&tow[1]
=='0'
&&tow[2]
=='0'))
for(
int j=
3; jlength()
; j+=3
) cout<}return0;
}
十六進製制轉八進位制演算法
兩種解法 都需要中轉一次 第一種 十六轉十,十轉八.由於執行多次迴圈,當資料很大時,超時.include includeusing namespace std long long lc int a,int n 10 8 int a 10 int l sum int i 0 while l for i...
十六進製制轉八進位制
時間限制 1.0s 記憶體限制 512.0mb 問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由0 9 大寫字母a f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格式 輸...
十六進製制轉八進位制
問題描述 給定n 個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來 n行,每行乙個由 0 9 大寫字母 a f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過 100000 輸出格式 輸出n 行,每行為輸入對應的八進位制正整...