vc华为面试题

vc华为面试题

ID:39580359

大小:21.50 KB

页数:5页

时间:2019-07-06

vc华为面试题_第1页
vc华为面试题_第2页
vc华为面试题_第3页
vc华为面试题_第4页
vc华为面试题_第5页
资源描述:

《vc华为面试题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1.用最简单的方法判断一个数是否为2的幂(华为笔试)    最开始以为是编程题就写了个函数:  bool f(int x)  {    while(x%2==0) //判断是否为奇数     x/=2;      //为追求效率可以用x>>=1  return !(x>1);}为了追求更高点点的效率可以把除法运算用右移代替,判断用位运算代替,就有下面代码:bool f(int x){   while((x&1)==0)//就是判断x的末位是否为1        x>>=1;   return !(x>1);}后来发觉这题其实有更简单的方法,请看下面问题:如何求一个数的二进

2、制表示中1的个数?int func(x){     int count=0;     while(x)    {       count++;       x+=x&(x-1);//这个操作能使x的二进制表示中的1的个数减1    }    return count;}这样判断一个数是不是2的幂代码就很简单了:(也就是判断它里面只有一个1,哈哈)bool f(int x){    return !(x&(x-1));}2 字符串逆置(腾讯面试)题目本身简单,但是有的是要求不能malloc新的内存空间,这样的话你就得在原来的串上进行操作就像下面的代码:void revers

3、e(char* ch){int i, len;char tmp;len = strlen( ch );for ( i = 0; i < len / 2; i++ ){  tmp = ch[ i ];  ch[ i ] = ch[ len - i - 1 ];  ch[ len - i - 1 ] = tmp;}}有的则是要求逆置到另外一段内存空间里,这样你就需用malloc了,而且注意函数的声明形式:     如果用纯c语言,恭喜你,你得用到指针的指针了:     int reserve(char** a, char** b)//返回值代表操作成功与否     c++的话

4、就可以用引用:     int reserve(char*& a, char*& b)3背包问题、约瑟夫问题、有序表合并(华为第4面机测)从一摞摞数里比如从20个数{12,24,22,58,47,11,19,28,33,67,81,34,27,41,50,36,88,51,21,14}中挑选出若干个数使它们的和等于100.输出所有可能的选法。解法:20个数放到a[20]数组里,然后b[20]数组里面放0或者1.然后再        sum=a[0]*b[0]+a[1]*b[1]+...+a[19]*b[19]当b=1时,说明下标为i的那个数a被选中了,否则说明a这个数没有

5、被选中于是用一个20位的二进制数k来表示b[]数组,然后将k从0...0(20个0)到1...1(20个1)遍历一遍(for循环),穷举出所有解法。代码如下:#include using namespace std;const int N=20;const int M=100;void main(){ int a[N]={12,24,22,58,47,11,19,28,33,67,81,34,27,41,50,36,88,51,21,14};int b[N];//放的0,1...int c[N];//掩码int k,sum;//下面是让c里面保存的数第

6、i位为1, 其他位都为0c[0]=1;    for (int i=1;i0;k--){  sum=0;  for (int j=0;j0)?1:0;   sum+=a[j]*b[j];  }   if (sum==M)  {   cout<<"以下数字相加和为"<

7、==1)    {     cout<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。