十进制转十六进制(蓝桥杯)

问题描述:

  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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 } 

猜你喜欢

转载自www.cnblogs.com/bilibiliya/p/10299817.html