從ACM的八進制到十進制問題開始學(xué)習(xí)
進制轉(zhuǎn)換問題在編程中是一個基礎(chǔ)而重要的概念,對于一些同學(xué)來說可能還不是很熟練。本文以ACM的八進制到十進制的練習(xí)題為例,通過C編程語言逐步解決各種進制之間的轉(zhuǎn)化問題。 學(xué)習(xí)八進制轉(zhuǎn)十進制的題目與函數(shù)部
進制轉(zhuǎn)換問題在編程中是一個基礎(chǔ)而重要的概念,對于一些同學(xué)來說可能還不是很熟練。本文以ACM的八進制到十進制的練習(xí)題為例,通過C編程語言逐步解決各種進制之間的轉(zhuǎn)化問題。
學(xué)習(xí)八進制轉(zhuǎn)十進制的題目與函數(shù)部分
首先,讓我們看一下八進制轉(zhuǎn)十進制的題目。在函數(shù)部分中,transform函數(shù)的作用是將想要轉(zhuǎn)換的數(shù)字從給定進制轉(zhuǎn)為十進制數(shù)字。參數(shù)x表示輸入的數(shù)字是幾進制的,這里我們是八進制。參數(shù)s則是需要轉(zhuǎn)化的數(shù)字。
解析for循環(huán)里的內(nèi)容
在for循環(huán)中,s.length()得到要轉(zhuǎn)換的數(shù)字的長度,將其視為字符串處理。循環(huán)體中進行計算,按權(quán)相加,即每一位的數(shù)字乘以權(quán)數(shù),再將得到的值相加。舉例說明:如若123為八進制數(shù)字,則其十進制值為1*8^2 2*8^1 3*8^0 83。需要注意在結(jié)尾減去一個‘0’。
主函數(shù)實現(xiàn)及運行結(jié)果
主函數(shù)中使用cin獲取輸入的字符,然后調(diào)用transform進行數(shù)字進制轉(zhuǎn)換,最后n接收返回的數(shù)字,再用cout輸出。別忘了main函數(shù)返回int型,返回0。程序運行結(jié)果如期望。
探究十進制轉(zhuǎn)為八進制情況
接下來我們看看十進制轉(zhuǎn)為八進制的情況。在函數(shù)transform中,將傳入的十進制數(shù)轉(zhuǎn)化為八進制數(shù)。運算方法為依次將數(shù)字除以8取余數(shù),直至商為零,最后將所得余數(shù)倒序排列得到最終的八進制數(shù)。
主函數(shù)實現(xiàn)及運行結(jié)果展示
主函數(shù)中使用cin獲取輸入的數(shù)字,調(diào)用transform函數(shù),并用n接收返回的值,最后用cout輸出。程序執(zhí)行結(jié)果符合預(yù)期。
其他進制轉(zhuǎn)換問題探討
對于其他進制之間的轉(zhuǎn)換,需要對函數(shù)做相應(yīng)的改動,特別注意超過10后需用A~Z表示。具體函數(shù)應(yīng)用請參考相關(guān)資料,此處不再贅述。