技巧 任意進製之間的轉化

2021-09-26 05:24:46 字數 1587 閱讀 6718

任意進製轉化思想:

10進製和其他進製數之間的轉換,那麼我們以10進製為媒介,進行相應的轉換,舉個例子,

計算機加減乘除運算一般是基於十進位制進行的,於是我們就可以考慮以十進位製作為中間媒介,比如

a ----> b

就可以先將a轉化為十進位制表示c

然後在進行c到b的進製轉化

即 將8進製x轉為2進製,我只需要將x先轉為10進製y,然後再10進製y轉為2進製z

例題:

輸入:輸入格式:測試輸入包含若干測試用例。每個測試用例佔一行,給出m和a,b的值。

當m為0時輸入結束。

輸出:輸出格式:每個測試用例的輸出佔一行,輸出a+b的m進製數。

樣例輸入:

1300 48

1 7樣例輸出:

1000

**實現:

#include

intmain()

while

(a!=0)

;//採用這樣的結構,可以解決a,b為0的情況,

for(

int i = size-

1;i>=

0;i--

)printf

("\n");

}return0;

}

例題:

題目描述:

求任意兩個不同進製非負整數的轉換(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進製整數。a,b是十進位制整數,2 =< a,b <= 16。

資料可能存在包含前導零的情況。

輸出:可能有多組測試資料,對於每組資料,輸出包含一行,該行有乙個整數為轉換後的b進製數。輸出時字母符號全部用大寫表示,即(0,1,…,9,a,b,…,f)。

樣例輸入:

aab3 7

**實現:

void

trans()

else

if(str[i]

>=

'a'&&str[i]

<=

'z')

else

if(str[i]

>=

'a'&&str[i]

>=

'z')

tmp+

=x*c;

//轉為10進製,乘權重

c*=a;//增加權重;

}char ans[40]

,size =0;

dowhile

(tmp)

;// puts(ans);這裡不能這樣用,因為ans為正確順序的倒著的

for(

int i = size-

1;i>=

0;i--

)printf

("\n");

}}

實現任意進製轉化

問題描述 實現十進位制轉num換成r進製數,num和r從鍵盤讀入 假定num為int且 32767 num 32767,r為int且2 r 16 程式設計可用素材 printf input the num,r printf output n 程式的執行效果應類似地如圖1和圖2所示,圖1中的4095,...

各種進製之間的轉化

1 16進製制字串改為byte public static byte hexstring2buf string src return ret 2 十六進製制轉2進製 方法一 public static string hexstr2binarr string string return s priva...

萌新必遇進製轉化問題,任意進製轉化

輸入進製 10 輸入數字 15 輸入進製 16 輸出數字 f 此題目其實就是將乙個任意進製先轉化為十進位制,然後將其轉化為對應的進製,很多人一開始都是想這如何讓計算機計算機直接識別我輸入的是幾進製,因為有縣里嘛,計算機能夠自主識別我輸入的是八進位制或十六進製制,比如我在輸入的數字前加0,系統就知道我...