進製轉換
給定乙個十進位制數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...