欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++面試題之進(jìn)制轉(zhuǎn)換的實(shí)例

 更新時(shí)間:2017年10月16日 10:58:55   作者:Jhuster  
這篇文章主要介紹了C++面試題之進(jìn)制轉(zhuǎn)換的實(shí)例的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這樣的知識,需要的朋友可以參考下

C++進(jìn)制轉(zhuǎn)換的實(shí)例

 一個(gè)面試題,要求輸入十進(jìn)制數(shù),輸出十六進(jìn)制,可以使用printf打印%d,%c,%s來輸出,但不能使用 %x 打印。

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

// 第一種算法,從低位到高位掃描移位,需要一個(gè)數(shù)組輔助倒序,一次性輸出結(jié)果 
 
#include <stdio.h> 
 
#define MAX_HEX_NUM 16 
#define OUT_DATA_LEN sizeof(int)*2 // 2個(gè)16進(jìn)制數(shù)表示1個(gè)字節(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; 
} 

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

#include <stdio.h> 
 
#define BITS_OF_INT  sizeof(int)*8 // int的位數(shù) 
#define OUT_DATA_LEN sizeof(int)*2 // 2個(gè)16進(jìn)制數(shù)表示1個(gè)字節(jié) 
 
int printHex( int num ) 
{ 
  int i; 
 
  printf("0x"); 
  for(i=0;i<OUT_DATA_LEN;i++) 
  { 
    unsigned int res = num & 0xf0000000; //注意,必須用 unsigned int來接收,否則當(dāng)輸入負(fù)數(shù)的時(shí)候會轉(zhuǎn)換錯(cuò)誤 
    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"); 
} 

    兩種算法其實(shí)都是采用移位的方式來運(yùn)算,而不是采用除法,這樣會更加高效一些,我想這個(gè)題目的考點(diǎn)應(yīng)該也在這里吧。

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

相關(guān)文章

  • VS Code 中搭建 Qt 開發(fā)環(huán)境方案分享

    VS Code 中搭建 Qt 開發(fā)環(huán)境方案分享

    這篇文章主要介紹了VS Code 中搭建 Qt 開發(fā)環(huán)境方案分享的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • C語言實(shí)現(xiàn)按月顯示的日歷

    C語言實(shí)現(xiàn)按月顯示的日歷

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)按月顯示的日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • c++運(yùn)算符重載基礎(chǔ)知識詳解

    c++運(yùn)算符重載基礎(chǔ)知識詳解

    運(yùn)算符重載是一種形式的C++多態(tài)。運(yùn)算符重載將重載的概念擴(kuò)展到運(yùn)算符上,允許賦予C++運(yùn)算符多種含義
    2014-03-03
  • C++之string類對象的容量操作詳解

    C++之string類對象的容量操作詳解

    通過在網(wǎng)站上的資料搜集,得到了很多關(guān)于string類對象的容量操作,通過對這些資料的整理和加入一些自己的代碼,希望能夠給你帶來幫助
    2021-08-08
  • 實(shí)現(xiàn)一個(gè)內(nèi)存池管理的類方法

    實(shí)現(xiàn)一個(gè)內(nèi)存池管理的類方法

    下面小編就為大家?guī)硪黄獙?shí)現(xiàn)一個(gè)內(nèi)存池管理的類方法。小編覺得挺不錯(cuò)的現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • 深入理解goto語句的替代實(shí)現(xiàn)方式分析

    深入理解goto語句的替代實(shí)現(xiàn)方式分析

    本篇文章是對goto語句的替代實(shí)現(xiàn)方式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++實(shí)現(xiàn)簡單單向鏈表

    C++實(shí)現(xiàn)簡單單向鏈表

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡單單向鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C++命名空間使用詳細(xì)介紹

    C++命名空間使用詳細(xì)介紹

    考慮一種情況,當(dāng)我們有兩個(gè)同名的人,Zara,在同一個(gè)班里。當(dāng)我們需要對它們進(jìn)行區(qū)分我們必須使用一些額外的信息和它們的名字,比如它們生活在不同的區(qū)域或者興趣愛好什么的,在C++程序中也會遇到同樣的情況,所以命名空間就此產(chǎn)生
    2022-09-09
  • opencv3/C++基于顏色的目標(biāo)跟蹤方式

    opencv3/C++基于顏色的目標(biāo)跟蹤方式

    今天小編就為大家分享一篇opencv3/C++基于顏色的目標(biāo)跟蹤方式,具有很好的參考價(jià)值,希望對的有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C語言模式實(shí)現(xiàn)C++繼承和多態(tài)的實(shí)例代碼

    C語言模式實(shí)現(xiàn)C++繼承和多態(tài)的實(shí)例代碼

    本篇文章主要介紹了C語言模式實(shí)現(xiàn)C++繼承和多態(tài)的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論