阿里巴巴集团 2011届实习生招聘 技术笔试卷——C++部分

C&C++部分

选择题(每题5分)

1int main(void)

{

  int count=0; int m=779;

  while(m)

  {count++;  m=m&(m-1);}

  printf("%d\n",count); return 0;

}

请问最终输出的count值为(     )        

A3      B4      C5      D8

注解by Snowwolf_Yang:这个题目实际上是求解m转换为二进行制形式中1的个数,m=m&(m-1)每执行一次就消除一个1

更多求解二进制形式中1的个数的方法 http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html

 

 

2在32位操作系统中,我们定义如下变量

int (*n)[10];

请问调用函数sizeof(n),返回值为(     )  A     B40     C8      D80

 注解by Snowwolf_Yang:这是n实际是一个 int**类型的数据。所以n实际上是一个指针,指针即地址,对于32位机器来说一个地址为4字节。

 

 

3int main(void)

{

  int i=1;  int j=i++;

  if((i++>++j) && (++i == j)) i+=j;

  printf("%d\n",i);  return 0;

}

请问最终输出的i值为(     )              A2     B3       C4      D5

  注解by Snowwolf_Yang:++i是使用i之前先使i加一,i++是使用i之后再加一.如果不能理解,那么可以理解为++i是先计算,再操作,i++是后计算,先操作。

是在执行完在if语句之前i = 2;j=1;if(i++>++j&&)是if(2>2)判断失败,后执行一次i+1,所以i=3

 

 

4以下叙述中正确的是(     )

A可以在一个函数中定义另一个函数     Bmain()函数必须放在其他函数之前

C构成C++语言程序的基本单位是类      D所有被调用的函数一定要在调用之前进行定义

   注解by Snowwolf_Yang:很明显其他都是错的。A中,可以在一个函数中声明一个函数,但不能定义

综合题(每题15分)

有10亿个数,这些数的值都在0~1000万之内。请使用定义一个数据结构实现这些数字的存储,并实现函数 get_bigger_count( unsigned value ),输入一个值value,返回这10亿个数中比value值大的数的数目。

要求:不能使用STL,请尽量考虑性能与资源的占用。 

posted @ 2014-03-28 14:53  Snowwolf_Yang  阅读(265)  评论(0编辑  收藏  举报