C 實現2 16進製制轉換

2021-10-03 13:23:12 字數 1110 閱讀 4391

進製轉換

給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數

輸入描述 :輸入為一行,m(32位整數)、n(2 ≤ n ≤ 16),以空格隔開。

輸出描述 :為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制(比如,10用a表示,等等)

輸入:7 2

輸出:111

先上**

#include

#include

#include

using

namespace std;

void

nsystem

(string &s,

int m,

int n)

while

(m)if

(m%n >9)

tmp =

(m%n -10+

'a')

;//參考16進製制,超過9用字母表示

else

tmp = m%n +

'0';

s.push_back

(tmp)

; m /

= n;}if

(flag==

false

) s.

push_back

('-');

reverse

(s.begin()

, s.

end())

;}intmain()

首先思考如果不是寫**,在現實中我們應該如何將10進製的整數轉換為其他進製,答案就是短除法。因為轉換成其他進製可能包含有字母,所以使用string來接收轉換後的結果。

短除法是倒著取餘的,我們可以先將取餘的結果存到string中,在取餘完畢之後再使用reverse(s.begin(),s.end())函式對string進行逆置,就能夠得到想要的結果。

做題時需要注意的是範圍問題,題中不僅要考慮正數,還有負數的情況,在這種情況下,輸出時需要帶上負號,就要考慮負號該在什麼時候加比較合適,因為字串在最後進行了逆置,所以應該先將要轉換的負數當成正數處理,取餘完畢後,在字串的結尾加上負號,這樣字串在逆置後就符合題意了。

進製轉換(2 16進製制)

參考 題目描述 求任意兩個不同進製非負整數的轉換 2進製 16進製制 所給整數在long所能表達的範圍之內。不同進製的表示符號為 0,1,9,a,b,f 或者 0,1,9,a,b,f 輸入描述 輸入只有一行,包含三個整數a,n,b。a表示其後的n 是a進製整數,b表示欲將a進製整數n轉換成b進製整數...

進製轉換(2 16進製制之間任意進製轉換)

進製轉換 描述在16進製制中,大寫字母a代表10,b代表11,f代表15。請將x進製的數字a轉化為y進製,並輸出。輸入輸入分三行,第一行乙個數字x 2 x 16 第二行乙個數字y 2 y 16 第三行乙個數字a a最長6位 輸出輸出x進製的a的y進製表示。輸入樣例1 10 24輸出樣例1 100輸出...

C語言程式設計入門必做題 2 16進製制轉換

將輸入的10進製數轉換成2 16進製制數 補充說明一句,這是最傻帽的演算法了,就是乙個個加上去而已 希望拋磚引玉了,清高是不吝指點,謝謝!include include include long get int num char del int main int argc char argv num...