Lq 十六進製制轉八進位制

2021-06-29 03:25:59 字數 1220 閱讀 9501

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

問題描述

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

輸入格式

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

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

輸出格式

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

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

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

樣例輸入 2

39123abc

樣例輸出 71

4435274 提示

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

之前用的方法是:16進製制先轉換成10進製,然後再把10進製轉換成了8進製,小數可以這樣做,但是大數就不行了,但是忽略了中間的轉換根本不可能實現的問題

錯誤**:

#include

#include

#include

#include

#include

using namespace std;

int s[100100000];

int main()

else  sum += (a[i]-48)*pow(16,j);        

}int i=0;

while(sum>0)

for(int j =i-1;j>=0;j--)printf("%d",s[j]);

printf("\n");

}return 0;

} 正確的**:

16進製制轉換成2進製是4個一組,八進位制是3個一組,如果不能被三整除,會出錯,所以 

要修正位數,往前面填0,填0後要防止轉換八進位制後第乙個為0,輸出時判斷一下

#include

#include

#include

#include

using namespace std;

int a[10000100];

int main(){

int test,j,len;

string str,str2;

scanf("%d",&test);

while(test--){

cin>>str;

len = str.length();

str2="";

for(int i=0;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 行,每行為輸入對應的八進位制正整...

十六進製制轉八進位制

資料很大 因此直接考慮用字串陣列來儲存十六進製制和八進位制 先根據 四位一體 的方法將十六進製制轉化為二進位制,而後根據 三位一體 將二進位制轉化為八進位制。include includeint main else if a i 1 else if a i 2 else if a i 3 else ...