麻烦的方法一:直接套取余除基的模板,然后输出

#include<cstdio>
#include<cstring>

//直接用进制转换的写法要注意,补0,因为输出要求为6位; 
//用一个字符数组来转换大于9的数 

char redix[13] = {'0','1','2','3','4','5','6','7','8','9','A','B','C'};

void print(int a){
    int z[40],num=0;

    do{
        z[num++] = a%13;
        a = a/13;
    }while(a!=0);

    for(int i=num-1;i>=0;i--){
        if(num==1)    printf("0");
        printf("%c",redix[z[i]]);
    }
}

int main(){

    int r,g,b;
    scanf("%d %d %d",&r,&g,&b);

    printf("#");

    print(r);
    print(g);
    print(b);

    return 0;
}

简单的方法二:观察范围,13进制的情况下,只有两位数,就是恒定输出6位;

#include<cstdio>
#include<cstring>


//用一个字符数组来转换大于9的数 

char redix[13] = {'0','1','2','3','4','5','6','7','8','9','A','B','C'};


int main(){

    int r,g,b;
    scanf("%d %d %d",&r,&g,&b);

    printf("#");                                //因为十进制数输入范围<=168<169(13的平方) ,故转化后的13进制数一定小于等于两位数 

    printf("%c%c",redix[r/13],redix[r%13]);        //这里r/13为转换后的高位,r%13为转换后的低位 
    printf("%c%c",redix[g/13],redix[g%13]);
    printf("%c%c",redix[b/13],redix[b%13]);

    return 0;
}