输入一个十进制数N,将它转换成R进制数输出。
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
输出数据为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
#include<stdio.h>
int main()
{
int n,m;
while(scanf("%d%d", &n, &m)==2)
{
if(n==0)printf("0\n");
else if(m<=10&&m>=2)
{int a,c,b[100],k=0;
a=n;
while(a!=0)
{c=a%m;
b[k]=c;k++;
a=a/m;}
for(int i=k-1;i>=0;i--)
{if(n>=0)printf("%d", b[i]);
else {if(i==k-1)printf("%d", b[k-1]);
else printf("%d", -b[i]);}}
printf("\n"); }
else if(m>10&&m<=17)
{
char o[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int c,a,k=0,b[100];
a=n;
while(a!=0)
{c=a%m;
b[k]=c;k++;
a=a/m;}
for(int l=k-1;l>=0;l--)
{if(n>=0)printf("%c", o[b[l]]);}
printf("\n");}}
return 0;
}
这道题我对了83.3%,还有什么地方错了,大佬求救!!