设为首页收藏本站language 语言切换
查看: 1455|回复: 0
收起左侧

2008年5月13日清华同方笔试题目(软件测试工程师)

[复制链接]
发表于 2010-5-31 16:14:56 | 显示全部楼层 |阅读模式
最近一位学员去同方面试,让写个函数,这个函数实现如下功能:
求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!=0)
  {
  //通过这个公式,每次a中的2进制1就会少1个,如果a里面是5,也就是101,那么经过   //这个公式一次,a就变成100。下一次就变成了000,自己算算就知道了。
  a=a&(a-1);
  n++; //2进制1的总数
  }
}
return n;
}
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-24 09:59 , Processed in 0.064511 second(s), 22 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表