关于杭电ACM2031 进制转换感觉找不出自己的错误,求指出

#include
int main()
{
long n,r;
char a[10000];
while(scanf("%d%d",&n,&r) == 2)
{
if(n == 0)
printf("0\n");
else
{
int i = 0;
if(n while(n > 0)
{
a[i++] = n%r;
n=n/r;
}
int j = i-1;
for(; j >= 0; j--)
{
if(a[j] > 10)
printf("%c",a[j]-10+'A');
else
printf("%d",a[j]);
}
putchar('\n');

    }
}
return 0;

}

 点击发表框工具栏上面的代码片图标,把代码放到代码片里,否则粘贴过来,容易出现错误,格式也很乱。
象这句话这样的格式就对了。
 long n,r;
 char a[10000];
 while(scanf("%ld%ld",&n,&r) == 2)//输入格式不对,或者把定义改为int,试试