C++面试问题转换实例
来源:爱站网时间:2020-10-03编辑:网友分享
对于级别较高的程序员,在面试的时候主管可能会涉及到很多专业问题进行面试,那么C++面试问题转换实例,大家了解的怎样呢?希望大家都能掌握好这些知识,让自己变得越来越好。
对于级别较高的程序员,在面试的时候主管可能会涉及到很多专业问题进行面试,那么C++面试问题转换实例,大家了解的怎样呢?希望大家都能掌握好这些知识,让自己变得越来越好。
C++进制转换的实例
一个面试题,要求输入十进制数,输出十六进制,可以使用printf打印%d,%c,%s来输出,但不能使用 %x 打印。
写了两种算法,还算比较简洁,粘贴在此。
// 第一种算法,从低位到高位扫描移位,需要一个数组辅助倒序,一次性输出结果 #include#define MAX_HEX_NUM 16 #define OUT_DATA_LEN sizeof(int)*2 // 2个16进制数表示1个字节 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#define BITS_OF_INT sizeof(int)*8 // int的位数 #define OUT_DATA_LEN sizeof(int)*2 // 2个16进制数表示1个字节 int printHex( int num ) { int i; printf("0x"); for(i=0;i > (BITS_OF_INT-4); char c; if( res
两种算法其实都是采用移位的方式来运算,而不是采用除法,这样会更加高效一些,我想这个题目的考点应该也在这里吧。
以上是爱站技术频道小编介绍的C++面试问题转换实例,我们在开发程序的时候首先要具备环境条件,然后才能对已经完成的项目进行测试。
上一篇:C++中各种初始化方法的详细说明
下一篇:如何使用C++set