用C语言如何将一批10进制数转换成r进制

如何编程,将一批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;
}