好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

1158: 零起点学算法65——进制转换

1158: 零起点学算法65——进制转换

Time Limit: 1 Sec   Memory Limit: 64 MB   64bit IO Format: %lld
Submitted: 1068   Accepted: 615
[ Submit ][ Status ][ Web Board ]

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
 

 

Source

零起点学算法

 

  1  #include<stdio.h>
  2   int   main(){
   3       int  n,r,a[ 100  ];
   4       while (scanf( "  %d%d  " ,&n,&r)!= EOF){
   5           int  flag= 1 ,i= 0  ;
   6           if (n< 0  ){
   7              flag= 0  ;
   8              n=- n;
   9           }
  10          
 11           do  {
  12              a[i++]=n% r;
  13              n=n/ r;
  14          } while  (n);
  15          
 16           if (flag== 0  )
  17          printf( "  -  "  );
  18           while (i-- ){
  19               if (a[i]> 9  ){
  20                  printf( "  %c  " , '  A  ' +a[i]- 10  );
  21               }
  22               else  {
  23                  printf( "  %d  "  ,a[i]);
  24               }
  25           }
  26          printf( "  \n  "  );
  27       } 
  28       return   0  ;
  29  } 

 

查看更多关于1158: 零起点学算法65——进制转换的详细内容...

  阅读:44次