HDU 2031 进制转换

进制转换

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 11350    Accepted Submission(s): 6384


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
 
 
 
 
 
 
 
十进制转其他,除m取余。因为有A,B。。。字符要输出。所以用字符数组来存余数。。。每个元素有一个余数。
 
 
 
View Code
 1 #include<stdio.h>
2 #define maxn 1000
3 char c[maxn];
4 int exchang(int n,int m)
5 {
6 int l = 0;
7 if (n < 0)//转为正数。
8 {
9 n = -n;
10 }
11 while (n)
12 {
13 c[l++] = n % m + (n % m > 9 ? 55 : '0');//分是数字字符还是字母字符。
14 n /= m;
15 }
16 return l;
17 }
18 int main()
19 {
20 int n,m,l,i;
21 while(scanf("%d%d",&n,&m) != EOF)
22 {
23 l = exchang(n,m);//处理的同时记录了用了多长。
24 if (n < 0)//输出负号。
25 {
26 printf("-");
27 }
28 for(i = l - 1;i >= 0; i--)//逆序输出。
29 {
30 printf("%c",c[i]);
31 }
32 printf("\n");
33 }
34 return 0;
35 }
原文地址:https://www.cnblogs.com/qiufeihai/p/2321956.html