進位制之間的轉換(1)——十進位制向二/八/十六進位制的轉換
阿新 • • 發佈:2018-12-26
1.十進位制轉換為十六/八進位制
#define _CRT_SECURE_NO_WARNINGS //為解決scanf函式不安全的警告問題 #include<stdio.h> #include<stdlib.h> int main() { int i; //基本變數 printf("請輸入所要進行進位制轉換的數:"); scanf("%d", &i); printf("%x\n", i); //%x表示輸出十六進位制的格式 /*printf("%o\n", i); %o表示輸出八進位制的格式*/ system("pause"); //暫停,否則VS執行視窗會一閃而過,包含在標頭檔案#include<stdlib.h>中 return 0; }
注:這是最最簡單的進位制之間轉換的方法,利用的是輸入/輸出的控制格式符。%x代表十六進位制;%o代表八進位制。
學習收穫:回顧了scanf,printf函式的用法,明白最簡單的進位制轉換方法,提高我以後在這方面的程式設計效率。加強我對VS熟練掌控。
反映的問題:對scanf,printf函式的格式細節做的不夠,對基礎知識的掌握浮於表面,不會靈活應用。註釋的的編寫太過隨性,程式設計 習慣不夠好。
2.十進位制轉換為二進位制(表現我們平時紙上運算過程)
#define _CRT_SECURE_NO_WARNINGS //為解決scanf函式不安全的警告問題 #include<stdio.h> #include<stdlib.h> int main() { int i, j, m, n;//基本變數 int a[16] = { 0 };//陣列初始化 printf("請輸入要進行進位制轉換的數的值:"); scanf("%d", &m); //計算二進位制的迴圈 for (i = 0; i < 15; i++) //因為僅限於整型的正數部分(最高位始終為0),因此的0~14的迴圈。 { j = m % 2; //求m的餘數 n = m / 2; //求商 m = n; //商值繼續向下除 a[i] = j; //餘數放在陣列中 } //輸出二進位制的迴圈 for (i = 15; i >= 0; i--) { printf("%d", a[i]); //將餘數倒序輸出,符合我們計算規則。 if (i % 4 == 0) //將餘數四位四位的輸出,方便記錄,觀看。 printf(" "); } system("pause"); return 0; }
注:這是體現我們平時對十進位制轉換為二進位制的計算過程(僅限於整型的正數部分)。利用的是for迴圈結構。
學習的收穫:加深的了對for迴圈的理解;學會了一個小技:利用空格字元使得執行結果更加方便檢視;對運算子%,/的運用更熟練。
發現的問題:陣列的初始化定義出錯:需要帶大括號。問題理解,找到解決思路不夠迅速,需要加強練習。同時這些程式碼都是單一轉換,像八/十六進位制很簡單,二進位制也只是計算的體現,以後還有更大進步空間。
執行結果: