问题描述:
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
给出一个非负整数,将它表示成十六进制的形式。
给出一个非负整数,将它表示成十六进制的形式。
输入格式
输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式
输出这个整数的16进制表示
样例输入
30
样例输出
1E
解答:
整体思路:
十进制数除以X逆序取余法
细节注意:
对输入十进制数为0的另行处理
string类型的insert函数有效的实现了逆序操作
个人参考代码:
1 #include<iostream> 2 #include<string> 3 4 using namespace std; 5 6 int main() 7 { 8 unsigned int dataX10; 9 cin>>dataX10; 10 11 string dataX16; 12 13 int remainder; 14 15 if(dataX10==0) cout<<0<<endl; //细节处理 16 else 17 while(dataX10!=0) 18 { 19 remainder=dataX10%16; 20 switch(remainder) 21 { 22 case 0: dataX16.insert(0,"0"); break; 23 case 1: dataX16.insert(0,"1"); break; 24 case 2: dataX16.insert(0,"2"); break; 25 case 3: dataX16.insert(0,"3"); break; 26 case 4: dataX16.insert(0,"4"); break; 27 case 5: dataX16.insert(0,"5"); break; 28 case 6: dataX16.insert(0,"6"); break; 29 case 7: dataX16.insert(0,"7"); break; 30 case 8: dataX16.insert(0,"8"); break; 31 case 9: dataX16.insert(0,"9"); break; 32 case 10:dataX16.insert(0,"A"); break; 33 case 11:dataX16.insert(0,"B"); break; 34 case 12:dataX16.insert(0,"C"); break; 35 case 13:dataX16.insert(0,"D"); break; 36 case 14:dataX16.insert(0,"E"); break; 37 case 15:dataX16.insert(0,"F"); break; 38 } 39 40 dataX10/=16; 41 } 42 43 cout<<dataX16<<endl; 44 45 return 0; 46 }