我的編程學習日誌(1)--進制轉換

昨天拿到一個題,把任意一個int型的十進制數n轉換爲m(0<m<=32)進制。

 

既然沒有小數思路就很簡單了,只需要把n除以m取餘數,記錄每個餘數,最後把餘數反序輸出(如圖)。

下面就來分步實現它。

 (注:這並不算最簡單的實現過程)

首先n/m取餘,並用一個數組來存儲餘數:

<pre class="cpp" name="code">int yu[100];
int n,m,i;
i=0;
cin>>n;
cin>>m;
while(n)
{	yu[i]=n%m;
	n=n/m;
	i++;
}




 然後是反序輸出:

for(i=i-1;i>=0;i--)
{
	cout<<yu[i];
}
cout<<endl;

 

(這裏存儲加反序輸出,我首先想到的是用鏈表,但題目已經說明n是int型,所以用來存儲餘數的數組[100]已經夠用了,不會造成太大的空間浪費,用鏈表就得不償失了。)

 

因爲超過11的數要用字母來表示,所以輸出時還要加這個判斷:

if(yu[i]>10)
{
yu[i]=yu[i]+55;
cout<<(char)yu[i];
}
else
cout<<yu[i];


這樣就完成了一個十進制轉其他進制的程序。

 

完整的代碼如下:

#include<iostream>
using namespace std;

int main()
{
	int n,m,i;
	int yu[100];
	i=0;
	cin>>n;
	cin>>m;
	while(n)
	{
		yu[i]=n%m;
		n=n/m;
		i++;
	}
	for(i=i-1;i>=0;i--)
	{
		if(yu[i]>10)
		{
			yu[i]=yu[i]+55;
			cout<<(char)yu[i];
		}
		else
			cout<<yu[i];
	}
	cout<<endl;
	return 0;
}


 

 

發佈了26 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章