现在的位置: 首页 > 综合 > 正文

清华同方软件测试工程师笔试题目

2013年03月12日 ⁄ 综合 ⁄ 共 662字 ⁄ 字号 评论关闭

最近一位学员去同方面试,让写个函数,这个函数实现如下功能:
求100个元素的数组中2进制1的总数。
其实考的是位运算符,
题目分解为求每个元素1的个数,然后再循环即可。
而如何求每个元素中1的个数呢?
上次学员去神州数码面试的时候,出了一道求一个元素2进制1的个数的题目。详见:http://blog.sina.com.cn/s/blog_4b086af101007yxh.html

其实如果神州的那个题目会的话,同方的这个题目就太简单了。
我们每次笔试的时候,答题的思路
首先应该是想以前做没有做过一样的题目,如果有,直接照搬。
再次想想有没有做过类似的题目,如果有修改后照搬。
最后是如果不是上面两种情况,那做题目就比较伤脑筋了。只能靠我们平时学习多积累,多总结,通过现象,找到作同类题目的本质。只要本质我们找到了,即使是最后一种情况,我们也就不怕了。

//假设是地址传递。int a[]:接受主调函数传递过来的实参(实参为数组名)
int calubinary(int a[])
{
 int i;
 int n=0;//2进制1的总数

 for(i=0;i<100;i++)
 {
  //while循环计算1个元素中2进制1的个数
  while(a[i]!=0)
  {
  //通过这个公式,每次a[i]中的2进制1就会少1个,如果a[i]里面是5,也就是101,那么经过   //这个公式一次,a[i]就变成100。下一次就变成了000,自己算算就知道了。
  a[i]=a[i]&(a[i]-1);
  n++; //2进制1的总数
  }

 }

 return n;
}

抱歉!评论已关闭.