社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 社区论坛任务 迷你宠物
  • 2546阅读
  • 0回复

[笔试]思科笔试题1

级别: 经院本科
发帖
1586
铜板
2193
人品值
2089
贡献值
15
交易币
0
好评度
1575
信誉值
0
金币
0
所在楼道
1. 用宏定义写出swap(x,y) 
2.数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型: 
int do_dup(int a[],int N) 
3 一语句实现x是否为2的若干次幂的判断 
4.unsigned int intvert(unsigned int x,int p,int n)实现对x的进行转换,p为起始转化位,n为需要转换的长度,假设起始点在右边.如x=0b0001 0001,p=4,n=3转换后x=0b0110 0001 

参考答案:

1。

#define swap(x, y)\ 
x = x + y;\ 
y = x - y;\ 
x = x - y; 

#define swap1(x, y)\ 
x ^= y;\ 
y ^= x;\ 
x ^= y; 

对于swap,当输入的数据是不同种类型的话,这个宏的结果是不对的。 
对于swap1,只适用于整型数据。

2。

第二题,采用hash表,对访问到的每一个数N,在hash表中记录其值为true,那么当再次访问到时,如果值已经为true,那么表明重复了,这样只要扫描一次,时间复杂度为O(n),而对hash表的访问时间复杂度是O(1) 
3。

((i & (i - 1)) ? false : true)

4。

result ^= (  ((1<<n)-1)  <<  p );

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
描述
快速回复

您目前还是游客,请 登录注册
如果您在写长篇帖子又不马上发表,建议存为草稿
认证码:
验证问题:
3+5=?,请输入中文答案:八 正确答案:八