目錄
我一開始的想法是通過輸入整數形式八進位制來轉換成十進位制輸出,後來發現用字元陣列輸入更方便。我這裡就講講我用整型資料輸入的轉換思路:
我們都知道二進位制由0和1組成,3位二進位制組成在一起,就可以表示0-7這八個數,所以八進位制實際上就是3位二進位制的組合(同理十六進製制是4位二進位制的組合),c語言的位運算操作的是二進位制,算術運算針對的是十進位制,所以,我們可以通過位運算求出八進位制的每一位數(3位二進位制為1位),然後通過算術運算子+,將他們加起來。和十進位制運算不同的地方在於乙個兩位的十進位制數的十位數要乘10加上個位數即乙個兩位十進位制數,而八進位制的兩位數,高位只需要乘以8。
這題我們也可以偷個懶,讓c編譯器幫我們算,只需要三行即可實現轉換:
int octal_num = 0;
scanf("%o", &octal_num);
printf("十進位制:%d\n", octal_num);
當然,不建議這樣做。
至於用字元陣列形式輸入,那就更簡單了,不用通過位運算取出八進位制數每位數,具體實現見網上參考部分。
#include
/** * @brief 八進位制轉十進位制
* @param octal_number 八進位制數
* @return 十進位制數
*/int octal_to_decimal(int octal_number)
while(octal_number != 0)
if(negative)
return -1 * dec_number;
return dec_number;
}#define first //使用第一種方法,注釋掉此行則使用第二種方法
int m
執行結果
// created by www.runoob.com on 15/11/9.
// copyright © 2023年 菜鳥教程. all rights reserved.
//
#includewww.cppcns.com.h>
#include
int main()
printfwww.cppcns.com("剛輸入的8進製數轉化為十進位制為\n%d\n",n);
return 0;
}本文標題: c語言每日練習之進製轉換
本文位址:
c 語言 進製轉換
題目描述 將十進位制整數n轉換成二進位制,並儲存在字元陣列中,最後輸出。要求定義並呼叫convert 函式,將十進位制整數n對應的二進位制數存入字元陣列str中。void convert int n,char str 輸入輸入乙個非負整數n,n 2 31。輸出輸出乙個01字串,即n對應的二進位制數,...
c 語言 進製轉換
題目描述 將十進位制整數n轉換成二進位制,並儲存在字元陣列中,最後輸出。要求定義並呼叫convert 函式,將十進位制整數n對應的二進位制數存入字元陣列str中。void convert int n,char str 輸入輸入乙個非負整數n,n 2 31。輸出輸出乙個01字串,即n對應的二進位制數,...
C語言每日練習之桌球比賽問題
目錄 兩個桌球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽籤決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請程式設計序找出三隊賽手的名單 簡單的組合問題,而且不考慮排序,如果固定a,b,c分別在0 2三個比賽隊伍,那麼兩球隊最多3種組合方式,全...