麻烦的方法一:直接套取余除基的模板,然后输出
#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;
}