將非負十進位制數轉換為b進製數遞迴與非遞迴

2021-09-24 05:33:09 字數 1488 閱讀 3764

一、題目分析

將非負十進位制整數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...