3H - 进制转换

输入一个十进制数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

// itoa()是一个非标准的C/C++语言功能,因此不能好好地被所有编译器使用。在大多数Windows下的编译器通常在<cstdlib>头文件包含非标准函数。
// 因此在oj中不建议使用非标准C库里的函数
// 附C标准库:https://www.runoob.com/cprogramming/c-standard-library.html
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int main()
 4 {
 5     int n, r;
 6     char s[1000];
 7     while(scanf("%d %d", &n, &r)!=EOF)
 8         puts(itoa(n, s, r));
 9     return 0;
10 }
WA
// 
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n, r, t, i, len, s[1000];
 5     while(scanf("%d %d", &n, &r)!=EOF)
 6     {
 7         if(n==0) printf("0\n");
 8         else
 9         {
10             len=0;
11             if(n<0) 
12             {
13                 printf("-");
14                 n=-n;
15             }
16             for(i=0;n!=0;i++)
17             {
18                 t=n%r;
19                 if(t>=10) s[i]='A'+t-10;
20                 else s[i]=t;
21                 len++;
22                 n=n/r;
23             }
24             for(i=0;i<len;i++)
25             {
26                 if(s[len-1-i]>=0&&s[len-1-i]<=9) printf("%d", s[len-1-i]);
27                 else printf("%c", s[len-1-i]);
28             }
29             printf("\n");
30         }
31     }
32     return 0;
33 }
AC

 

posted @ 2019-02-08 22:24  Blind  阅读(577)  评论(0编辑  收藏  举报