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;
}