2031——進制轉換

Problem Description
輸入一個十進制數N,將它轉換成R進制數輸出。
 

Input
輸入數據包含多個測試實例,每個測試實例包含兩個整數N(32位整數)和R(2<=R<=16, R<>10)。
 

Output
爲每個測試實例輸出轉換後的數,每個輸出佔一行。如果R大於10,則對應的數字規則參考16進制(比如,10用A表示,等等)。
 

Sample Input
7 2 23 12 -4 3
 

Sample Output
111 1B -11
 

#include <stdio.h>
#include <math.h>
main()
{
     int n;
     while(scanf("%d",&n)!=EOF)
     {
          int r,flag,i=0;
          char a[100],b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
          scanf("%d",&r);
          flag=n/abs(n);                                         //注意符號
          n=abs(n);
          while(n>=r)
          {
               a[i]=b[n%r];                                     //取餘結果符號同被除數
               n/=r;
               i++; 
          }
          a[i]=b[n];
          i++;
          if(flag<0)
              printf("-");
          while(i--)
          {
               printf("%c",a[i]);
          }
          printf("\n");
     }
}

剛看到這個題目的時候一愣,然後仔細想了想,跟十進制是一樣的。

之前沒有考慮符號,然後就出現了


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