題目要求將[0,168]範圍內的三個十進制整數轉換成13進制數,可以使用進制轉換函數來實現進制轉換輸出,但是要特別考慮對0的處理(有兩個測試用例通過不了,暫時還沒有找到問題)。
#include <stdio.h>
#include <stdlib.h>
const char radix[13]={'0','1','2','3','4','5','6','7','8','9','A','B','C'};
void Reverse(int Color[],int &color,int &num){
do{
Color[num++]=color%13;
color/=13;
}while(color!=0);
}
void Output(int Color[],int num){
if(num==1){
printf("00");
}
else{
for(int i=num-1;i>=0;i--){
printf("%c",radix[Color[i]]);
}
}
}
int main(){
int R,G,B;
int r[40],g[40],b[40];
int numR=0,numG=0,numB=0;
scanf("%d %d %d",&R,&G,&B);
Reverse(r,R,numR);
Reverse(g,G,numG);
Reverse(b,B,numB);
printf("#");
Output(r,numR);
Output(g,numG);
Output(b,numB);
system("pause");
return 0;
}