十六進製制轉八進位制

2021-07-24 20:53:05 字數 1530 閱讀 3986

問題描述

給定n

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

輸入格式

輸入的第一行為乙個正整數n(

1<=n<=10

)。接下來

n行,每行乙個由

0~9、大寫字母

a~f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過

100000

輸出格式

輸出n

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

【注意

輸入的十六進製制數不會有前導

0,比如

012a

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

樣例輸入

239

123abc

樣例輸出

714435274

【提示

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

思路:先轉成二進位制,再變成

6進製,由之前的

4位一起,變成

3位一起

字串的擷取函式

substr

這個方法

,有兩個輸入引數分別為起始位址和擷取的長度。

s2 = s1.substr(0,3)

自己的執行一直不通過,怎麼改都不行,如果知道為什麼錯了,請告訴我一下哈

#include#includeusing namespace std;

string chartostring(char a)

}int main()

//將16進製制轉成2進製

for(int i=0; i

另外附上100分的**

#include#include#includeint temp[410000];

char jz16[110000];

int answer[410000];

int switcha(char a)

int main()

}//乙個十六進製制變成4個二進位制順著來

memset(answer,0,sizeof(answer));

for(i=len*4-1,sum=0;i>=0;i-=3,sum++)

//三個二進位制變成乙個八進位制逆著來

for(j=i,k=0;j>i-3&&j>=0;j--,k++)

answer[sum]+=temp[j]*(int)pow(2,k);

for(i=sum;;i--)

if(answer[i]!=0)

break;

//注意不輸出前面多餘的0

for(i=i;i>=0;i--)

printf("%d",answer[i]);

printf("\n");

} return 0;

}

十六進製制轉八進位制

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

十六進製制轉八進位制

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

十六進製制轉八進位制

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