百度校园招聘在线笔试题及答案_第1页
百度校园招聘在线笔试题及答案_第2页
百度校园招聘在线笔试题及答案_第3页
百度校园招聘在线笔试题及答案_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 1 题:用 C 语言实现一个公用库函数 void * memmove(void *dest,const void *src,size_t n) 。 该函数的功能是拷贝 src 所指的内存内容前 n 个字节到 dest 所指的地址上。 注意,作为公用 库函数,请注意安全检查,注意处理内存区重合的情况。第 2 题:已知一个字串由 GBK 汉字和 ansi 编码的数字字母混合组成, 编写 C 语言函数实现 从中去掉所有 ansi 编码的的数字和字母(包括大小写 ),要求在原字串上返回结果。函数接 口为: int filter_ansi(char* gbk_string) 。注:汉字的 GBK 编

2、码范围是 0x8140 - 0xFEFE第 3 题:芯片测试。有 2k 块芯片,已知好芯片比坏芯片多。请设计算法从其中找出一片好 芯片, 并说明你所用的比较次数上限。其中: 好芯片和其它芯片比较时,能正确给出另一块 芯片是好还是坏;坏芯片和其它芯片比较时,会随机的给出好或是坏。在这里填写答案:第 1 题:用 C 语言实现一个公用库函数 void * memmove(void *dest,const void *src,size_t n) 。 该函数的功能是拷贝 src 所指的内存内容前 n 个字节到 dest 所指的地址上。 注意,作为公用 库函数,请注意安全检查,注意处理内存区重合的情况。v

3、oid* memmove(void * dest, const void * src, size_t n) void* temp = dest;if (dest = (char *)src + n) / 无内存地址重叠 while (n-)*(char *)dest = *(char *)src;dest = (char *)dest + 1;src = (char *)src + 1;else/ 有内存地址重叠dest = (char *)dest + n - 1; src = (char *)src + n - 1;while (n-)*(char *)dest = *(char *)sr

4、c; dest = (char *)dest - 1;src = (char *)src - 1;return (temp);第 2 题:已知一个字串由 GBK 汉字和 ansi 编码的数字字母混合组成, 编写 C 语言函数实现 从中去掉所有 ansi 编码的的数字和字母(包括大小写 ),要求在原字串上返回结果。函数接 口为: int filter_ansi(char* gbk_string) 。注:汉字的 GBK 编码范围是 0x8140 - 0xFEFE int filter_ansi(char* gbk_string)char *p = gbk_string, *q = gbk_stri

5、ng;while (*q != 0)if (*q = 0) & (*q = 0) & (*q = a) & (*q = A) & (*q = 0x8140) & (*(unsigned short*)q) = 0xFEFE) / 是汉字*p+ = *(char*)q)+;*p+ = *(char*)q)+;else/不是汉字q+; q+;*p = 0;return (p - gbk_string); 第 3 题:芯片测试。有 2k 块芯片,已知好芯片比坏芯片多。请设计算法从其中找出一片好 芯片, 并说明你所用的比较次数上限。其中: 好芯片和其它芯片比较时,能正确给出另一块 芯片是好还是坏;坏芯

6、片和其它芯片比较时,会随机的给出好或是坏。答案: 1首先两个两个分成一对。如果互测的结果是好好,那么留下,否则扔掉。扔掉的里面总 是坏的不会比好的少。 这样剩下的要么是两个好的, 要么是两个坏的。 可以称剩下的这样的 对为纯粹对。经过这一次分对,最坏的情况是 1000 对都留下;2然后把留下的对再随便两两分组。这样变成每组里有两个纯粹对。每组比较时,从这两 个纯粹对中任意各选一个元素进行比较。 如果都是好的, 那么留下这组,否则扔掉。这样剩 下的要么四个都是好的, 要么四个都是坏的, 我们把四个看成一个组, 这个组是纯粹组。经 过这一次分对,最坏的情况是500 对都留下;3接着把剩下的这些组再

7、随便两两分对。得到的每对里有两个纯粹组。比较每对里的两个 纯粹组时, 还是任意各选一个元素比较。 如果都是好的, 那么留下这对,得到一个新的纯粹 组,里面有 8 个好的或者 8 个坏的。否则扔掉。最坏的情况是留下 250 对;4再把这些剩下的组两两分对。同样从每对的两个纯粹组中各任选一个元素进行比较。都 是好的留下,成为新的纯粹组。否则扔掉。这样可得到一个新的纯粹组,其中 16 个都是好 的或者 16个都是坏的。最坏的情况是留下125 对;5同样两两分对,得到 62对和一个单独的。我们用同样方法比较这 62 对。最坏的情况是 留下 31 对,其中每对里 32 好或者 32 坏,和单独的一个,其

8、中 16 好或者 16 坏。把它们带 入下一轮;6把剩下的 32 对再任意两两分组, 其中一组是一个含有 32 好或坏, 另一个含有 16 个好或 坏,记为A。其它的15组都是两个含有 32好或坏的。同样方法比较这 15组,得到新的纯 粹组,含有 64 好或 64坏。最坏的情况留下 15组。至于 A, 我们也是两个中各任选一个代 表比较,如果同好,那么留下,成为新的纯粹组,含有 48个好或者坏。否则从含有 32好或 坏的那组中任意选 16 个和另一组含有 16 个好或坏的一起扔掉,剩下的 16 个同好或同坏的 成为一个新的纯粹组。 这样我们可以保证扔掉的里面总是坏的不比好的少。 也就是说最坏的

9、 情况是剩下 16 组。7把这 16 组两两分对。用和第六步一样的方法。我们最坏可以得到8 个。其中 7 个是 128好或者 128 个坏,还有一个是数目小于 128 的纯粹组。8同理,再两两分对,我们可以得到4 组;然后得到两组。这时只要从数量最多的那个组中任选一个,即为好的。所以最坏的情况是要比较 1000+500+250+125+62+31+16+8+4+2=1998 次 . (如果剩下的是两组芯片个数一样多,那么 可以从两个组中任选一个, 即为好的。 因为好的数量总比坏的数量多, 而且我们每次扔掉的 都是坏的比好的多或者相等。所以剩下的这两个组中的芯片只可能都是好的。 )备注说明,非正

10、文,实际使用可删除如下部分。本内容仅给予阅读编辑指点:1、 本文件由微软 OFFICE办公软件编辑而成,同时支持WPS。2、文件可重新编辑整理。3、建议结合本公司和个人的实际情况进行修正编辑。4、因编辑原因,部分文件文字有些微错误的,请自行修正,并不影响本文阅读。Note: it is not the text. The followingparts can be deleted for actual use. This content only gives reading and editingin structi ons:1. This docume nt is edited by Microsoft office office software and supports WPS.2. The files can be edited and reorganized.3. It is suggested to revise and edit accord ing to the actual situati on of the compa ny and in divi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论