試題 基礎練習 十六進製制轉八進位制

2021-10-07 17:52:01 字數 1312 閱讀 2202

資源限制

時間限制:1.0s 記憶體限制:512.0mb

問題描述

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

輸入格式

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

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

輸出格式

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

【注意】

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

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

樣例輸入239

123abc

樣例輸出

714435274

【提示】

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

**

#include

#include

using

namespace std;

intmain()

}if(b.length()

%3==1

) b =

"00"

+ b;

if(b.

length()

%3==2

) b =

"0"+ b;

int flag =0;

for(

int k =

0; k < b.

length()

; k +=3

) cout << endl;}}

return0;

}

本題需要注意幾個地方

乙個 本題採用輸入乙個,輸出乙個的方式,而不是全部輸入後再進行處理的方式

本題採用string a來儲存輸入的變數,採用string b來處理,每次迴圈,string b 都需要重新賦空。

還要注意從16進製制轉換為8進製需要進行補0,取餘後+0的個數=3,二的三次方為8

另外本題採用了將16進製制轉換為2進製,在轉換為八進位制,是乙個比較通用的辦法,轉化時,每次k+3;

本題採用了flag變數來消除前導0,flag變數一開始設為0,但在轉換為8進製的途中,它一旦變為1,就再也無法變成0,也就是只要八進位制的有一位不是0,後面的就都會輸出

另外就是本題用到了一些字串的操作,需要引入

#include

類似於

a=「00」+a;

以及a.length()求字串的長度(這個長度不包括\0,「a」的長度為1)這些操作要會

試題 基礎練習 十六進製制轉八進位制

試題 基礎練習 十六進製制轉八進位制 資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由09 大寫字母af組成的字串,表示要轉換的十六進製制正整數,每個十六...

試題 基礎練習 十六進製制轉八進位制

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

試題 基礎練習 十六進製制轉八進位制

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