十六進製制轉八進位制(C語言版)

2021-08-14 05:06:00 字數 2451 閱讀 7634

問題描述

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

輸入格式

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

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

輸出格式

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

【注意

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

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

樣例輸入239

123abc

樣例輸出

714435274

提示】

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

#include#includevoid hex2bin(char left, int count, char ch);

char bin2oct(char left, int poi);

/* 基本思想是將輸入的十六進製制字串裝入hexs字元陣列中,

從hexs尾部乙個乙個取字元轉換成二進位制字元從尾部開始裝入left字元陣列中,

將三個十六進製制字元(3 * 4 = 12)裝入left中後,

從left尾部以三個二進位制數一組(4 * 3 = 12)轉換成八進位制裝入octs[i]字元陣列中

重新執行上述步驟

*/ int main()

count = 0;

}}

if(count == 1) else if(count == 2)

if(octs[i][index - 1] == '0') index--; // 如果前導數為零,刪除之

octs_len[i] = index; //將轉換成的八進位制字串長度存入octs_len中 }

for(i = 0; i < n; i++)

return 0;

}void hex2bin(char left, int count, char ch)

} char bin2oct(char left, int poi)

受疫情影響不能去學校了,看到有人指出**質量差?,正好有時間就來修改一下。

這篇部落格是本科時候寫的,考完研之後也沒用過c了,修改的時候真的是靈魂三問:我是誰?我在哪?我在幹什麼?

#include#includevoid hex2bin(char window, int count, char ch);

void bin2oct(char window, char octs[130000], int row, int col, int n);

/* 基本思想是將輸入的十六進製制字串裝入hex字元陣列中,

從hex尾部乙個乙個取字元轉換成二進位制字元從尾部開始裝入window字元陣列中,

將三個十六進製制字元(3 * 4 = 12)裝入window中後,

從window尾部以三個二進位制數一組(4 * 3 = 12)轉換成八進位制裝入octs[i]字元陣列中

重新執行上述步驟

*/int main()

}/* 當count=1or2時,window中字元未能轉換 */

bin2oct(window, octs, i, col, count); // 再轉換count(n)個

col += count;

/* 當count=1or2時,即使上面轉換了,window中仍有1or2個字元 */

if (count == 1) octs[i][col++] = window[8];

if (count == 2) octs[i][col++] = (window[4] - '0') * 2 + (window[5] - '0') + '0';

/* 轉換成的八進位制字串開始的'0'全部刪除 */

while (octs[i][col - 1] == '0') --col;

octs_len[i] = col; //將轉換成的八進位制字串長度存入octs_len中

}for(i = 0; i < n; i++)

return 0;

}/* 乙個十六進製制字元轉換成四個二進位制字元並存入window中 */

void hex2bin(char window, int count, char ch)

strncpy(window + 8 - count * 4, bin, 4);

}/* window中的四個二進位制字元轉換成乙個八進位制字元並存入到octs中,可以轉換n個 */

void bin2oct(char window, char octs[130000], int row, int col, int n)

}

十六進製制轉八進位制

時間限制 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 ...