国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++面試題之進制轉換的實例

2020-05-23 13:46:27
字體:
來源:轉載
供稿:網友

C++進制轉換的實例

 一個面試題,要求輸入十進制數,輸出十六進制,可以使用printf打印%d,%c,%s來輸出,但不能使用 %x 打印。

    寫了兩種算法,還算比較簡潔,粘貼在此。        

// 第一種算法,從低位到高位掃描移位,需要一個數組輔助倒序,一次性輸出結果  #include <stdio.h>  #define MAX_HEX_NUM 16 #define OUT_DATA_LEN sizeof(int)*2 // 2個16進制數表示1個字節(jié) static char Hex_Char_Table[MAX_HEX_NUM] = {   '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };  int ten2hex( int data ) {   char result[OUT_DATA_LEN+1];   int i,index;    result[OUT_DATA_LEN] = '/0';   for( i=OUT_DATA_LEN-1; i>=0; i-- )   {     index = data & 0xf;     result[i] = Hex_Char_Table[index];     data = data>>4;   }    printf("0x%s/n",result);    return 0; } 

    下面是第二種算法,從高位向低位掃描,得到結果直接打印。

#include <stdio.h>  #define BITS_OF_INT  sizeof(int)*8 // int的位數 #define OUT_DATA_LEN sizeof(int)*2 // 2個16進制數表示1個字節(jié)  int printHex( int num ) {   int i;    printf("0x");   for(i=0;i<OUT_DATA_LEN;i++)   {     unsigned int res = num & 0xf0000000; //注意,必須用 unsigned int來接收,否則當輸入負數的時候會轉換錯誤     res = res >> (BITS_OF_INT-4);     char c;     if( res <= 9 )       c = res + '0';     else       c = 'A' + res - 10;      printf("%c",c);      num = num << 4;   }    printf("/n"); } 

    兩種算法其實都是采用移位的方式來運算,而不是采用除法,這樣會更加高效一些,我想這個題目的考點應該也在這里吧。

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 佳木斯市| 曲阳县| 德保县| 佛学| 平远县| 永福县| 乐安县| 同心县| 贺州市| 静宁县| 和顺县| 金山区| 甘南县| 伊川县| 东乡县| 从江县| 三明市| 科尔| 莒南县| 平遥县| 滁州市| 苏尼特右旗| 漳浦县| 乐山市| 大荔县| 伊宁市| 蒲江县| 嘉义市| 江达县| 西盟| 博白县| 崇州市| 保康县| 横峰县| 屏南县| 忻城县| 博客| 山阳县| 科尔| 册亨县| 呈贡县|