进制转换

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
 
 1 #include <stdio.h>
 2 
 3 int main(){
 4     int number;
 5     int system;
 6     char s[50];
 7     int i;
 8     int length;
 9     int flag;
10     
11     while((scanf("%d%d",&number,&system))!=EOF){
12         i=0;
13         flag=0;
14         
15         if(number<0){
16             number=-number;
17             flag=1;
18         }
19         
20         while(number){
21             if(number%system<=9){
22                 s[i]=(number%system)+'0';
23             }
24             
25             else if(number%system==10)
26                 s[i]='A';
27                 
28             else if(number%system==11)
29                 s[i]='B';
30             
31             else if(number%system==12)
32                 s[i]='C';
33                 
34             else if(number%system==13)
35                 s[i]='D';
36                 
37             else if(number%system==14)
38                 s[i]='E';
39                 
40             else if(number%system==15)
41                 s[i]='F';
42                 
43             number/=system;
44             i++;
45         }
46         length=i;
47         
48         if(flag==1)
49             printf("-");
50             
51         for(i=length-1;i>=0;i--)
52             printf("%c",s[i]);
53             
54         printf("\n");
55         
56         
57         
58     }
59         
60     
61     return 0;
62 }

 

 

 

 

posted @ 2014-10-28 12:12  zqxLonely  阅读(320)  评论(0编辑  收藏  举报