如何编程,将一批10进制数x转换为r进制数,2≤r≤36,高于16进制数的数字表示法沿用16进制的惯例,例G表示16,H表7等等,注意x可能为负。输入的第一行数是数据的个数n,后面跟膀行,每行包括两个整数X和r,分别表示一个10进数和要转换的进制数。例如输入: 3 322 -34543530 108
则输出为100000 -CNOF 12
@ada; 请解答一下。
#include <stdio.h>
int main(void)
{
int n, x, r;
char ans[100];
scanf("%d", &n);
while (n--)
{
scanf("%d%d", &x, &r);
int flag = 0;
if (x < 0)
{
x = -x;
flag = 1;
}
int i = 0;
do
{
int t = x % r;
if (t < 10)
{
ans[i++] = (char)(t + '0');
}
else
{
ans[i++] = (char)(t - 10 + 'A');
}
x /= r;
}
while (x);
if (flag)
{
printf("-");
}
for (int j = i - 1; j >= 0; j--)
{
printf("%c", ans[j]);
}
printf("\n");
}
return 0;
}