一、題目分析
將非負十進位制整數n轉換成b進製。(其中b=2~16)
二、演算法設計思路
遞迴模型:
1、遞迴出口:即當整數n 等於0時,遞迴結束。if
(0 == n)
return 0;
2、遞迴體的函式式:int
change2(f(n), int
b);f(n)=n/b;
遞迴樹的呼叫過程:
三、程式**
遞迴方法:
#include#include//將非負十進位制n轉換成b進製
char arry[100];
int i = 0;
int change2(int n, int b)
else
} i++;
change2(n, b);//再次進入遞迴體中 }}
int main()
printf("\n");
system("pause");
return 0;
}
非遞迴方法:
int main()
int arr[32];//定義乙個整型陣列
int i = 0;
int b; //儲存m%r餘數的值
while (m != 0)
while (i>0)
}printf("\n");
system("pause");
return 0;
}
2、測試結果
1、輸入小於10的數將其轉換為2進製
2、輸入大於10的數,將其轉換為16進製制
3、輸入數字將其轉換為8進製
五、經驗總結
十進位制的數轉成二進位制,最常用的方法,就是除b取餘法,將十進位制的數n除以b取其餘數,這裡得到的餘數是b進製數的最後一位。比如:7轉化為2進製,先用7%2得到的是1,這裡的1是轉化後的二進位制數的最後一位,再接著,令n=n/b,即為除得的整數結果, n=7/2=3;再同以上的方法將,3%2=1作為2進製數的倒數第二位。以此類推,2進製數的倒數第三位等於3/2%2=1;這時n=0了,迴圈到此終止,二進位制的數為111,**實現時需要逆序輸出(這裡很容易想到用陣列來訪問每乙個餘數)。若b進製的數共有x位,令n=x-1;n往下移動一位一直到n=0,對陣列進行輸出。遞迴函式最重要的就是遞迴出口和遞迴體函式,所以在做題目時,一定要明確這兩個的內容。
將十進位制數M轉換為N進製數
題目描述 給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數。exp 輸入 輸入為一行,m 32位整數 n 2 n 16 以空格隔開,如7,2。輸出 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制 比如,10用a表示,等等 如111...
將非負十進位制整數n轉換成b進製
遞迴 一 題目1 將非負十進位制整數n轉換成b進製。其中b 2 16 二 題目分析 將十進位制n轉換成任意進製b的方法是 n除以b取餘作為轉換後的數的最低位,在商不為0的情況下,則商繼續除以b,取餘作為次低位,直到商為0為止。思想 將十六進製制的表示形式,即 0 1 2 3 4 5 6 7 8 9 ...
將十進位制數轉換為二進位制數和十六進製制數
題目 將十進位制數轉換為二進位制數和十六進製制數 stack的先進後出原則,符合十進位制轉二進位制的轉換規則。因此在解題時考慮使用stack。同時使用string進行結果儲存。注意 1.十六進製制數要在開頭新增0x。2.string的末尾要加 0 string get2string long num...