永远不要忘记进制转换中,被转换数字为0 这一特殊情况,要分开说明!
#include <iostream>
#include <cstring>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int change_radix(int a)
{
int b[50];
int i = 0,j;
if(a != 0)
{
while(a != 0)//进制转换
{
b[i++] = a % 13;
a /= 13;
}
if(i < 2)
printf("0");//补零
for(j = i - 1;j >= 0;j--)
{
if(b[j] > 9)
printf("%c",'A' + (b[j] - 10));
else if(b[j] <= 9 && b[j] >= 0)
printf("%d",b[j]);
}
}
else
{
printf("00");//特殊情况分开讨论
}
return 0;
}
int main() {
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c) != EOF)
{
printf("#");
change_radix(a);
change_radix(b);
change_radix(c);
printf("\n");
}
return 0;
}