DHU OJ | 基本練習-69 進制轉換

69 進制轉換

作者: 朱星垠 時間限制: 1S章節: 字符串

問題描述 :

輸入一個十進制數,將其化成N進制數輸出(2≤N≤16)。 輸出結果時,大於等於10的數字用字母代替,A代表10,B代表11以此類推。

輸入說明 :

你的程序需要從標準輸入設備(通常爲鍵盤)中讀入多組測試數據。每組輸入數據由一行組成,每行有2個數,分別代表十進制數m(0≤ m < 2^31)和進制N(2≤N≤16),它們以空格分隔,在行首和行尾沒有多餘的空格。

輸出說明 :

對每組測試數據,你的程序需要向標準輸出設備(通常爲啓動該程序的終端)依次輸出一組對應的答案:輸出10進制數轉換後的N進制數。所有數據前後沒有多餘的空格,兩組數據之間也沒有多餘的空行。

輸入範例 :

100 10
100 15

輸出範例:

100
6A
 

筆記

進制轉換就是一個除N取餘的過程。當代轉換十進制數是0時,要注意特別判斷。

關鍵代碼:

//m:帶轉換10進制數,n:目標進制數的位數
while(m){
	a[n] = m%N;
	m /= N;
				
	n++;
}

代碼

#include<stdio.h>
#include<string.h>

int main(){
	int m,N;
	int a[33];
	while(scanf("%d",&m)!=EOF){
		scanf("%d",&N);
		
		if(m==0) printf("0");
			else{
			memset(a,0,sizeof(a));
			
			int n = 0;
			while(m){
				a[n] = m%N;
				m /= N;
				
				n++;
			}
			int i;
			for(i=n-1;i>=0;i--){
				if(a[i]>=10 && a[i]<=20)
					printf("%c",'A'+a[i]-10);
				else printf("%d",a[i]);
			}	
		}
		
		printf("\n");
	}
	
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章