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