浙大网新笔试答案.pdf_第1页
浙大网新笔试答案.pdf_第2页
浙大网新笔试答案.pdf_第3页
浙大网新笔试答案.pdf_第4页
浙大网新笔试答案.pdf_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

C C C C 笔试题 姓名 申请职位 日期 时间 分钟 第壹部分 不定 项选择题 1 下面为四组循环语句 若需求为遍历整数区间 0 1000 请指出正确的 A for BYTE i 0 i 1000 i B for INT32 i 0 i 0 i D for INT32 i 999 i 0 i 提示及答案 B 各类型取值范围 无符号类型递减时下溢 2 有如下函数 如果参数 par 的值为 806 十进制 请选择函数返回值 A 4 B 5 C 6 D 7 提示及答案 B 函数返回值为参数par的二进制表示中 的个数 3 现有 类砝码 每一类中各种砝码重量不尽相同 其重量序列如下所示 如果要求能称量重量为 1g xg 范围 内任意值的物品 同一重量的砝码可以使用多个 x 的值很大 而且只允许使用一类砝码 哪类所需砝码个数最 少 A 1g 2g 3g 4g 5g B 1g 2g 5g 10g 15g 20g 50g C 1g 2g 4g 8g 16g 32g D 1g 3g 9g 27g 81g 提示及答案 D 记前 项和为 Sn a1 a2 a3 an 则 Sn 1 an 1 Sn 3an 1 an 2 4 现有一四字节变量 DWORD a 0 x12345678 若 CPU为 little endian 模式 其内存分布为 若 int funcXX int par int cnt 0 while par cnt par return cnt CPU 为 big endian 模式 其内存分布为 内存地址由小到大排列 A 0 x12 0 x34 0 x56 0 x78B 0 x87 0 x65 0 x43 0 x21 C 0 x78 0 x56 0 x34 0 x12D 0 x56 0 x78 0 x12 0 x34 提示及答案 C A 5 有如下代码定义了链表头的结构 head 指向链表头 双向循环链表 new 指向新节点 现要将 new加入 head 所指链表 选项 可以将 new 插入链表头部 选项 可以将 new 插入链表尾部 A new prev head new next prev new new next head next head next new B new prev head prev head prev new new next head new prev next new C new next head next head next new new prev head new next prev new D new prev head head next prev new head next new new next head prev 提示及答案 C B 6 有一字符串定义为 char name hello 则 sizeof name strlen name A 5B 6C 7D 8 提示及答案 B A 字符串末尾有字符 0 数组含有此字符 字符串长度不含此字符 7 有如下程序 所有打印语句后加上了编号 这些语句的执行顺序为 include using namespace std class CBase public CBase cout construct CBase endl virtual CBase cout destruct CBase endl virtual void print cout base s print endl class CMember public CMember struct list head struct list head next prev cout construct member endl virtual CMember cout destruct member endl class CChild public CBase public CChild CBase cout construct CChild endl virtual CChild cout destruct CChild endl virtual void print cout child s print 进程 调度 线程 函数调用栈 线程 14 a 函数可重入性 reentrant 和线程安全 thread safe 各指什么 有什么关系 b C 语言库函数 malloc 是可重 入的吗 是线程安全的吗 提示及答案 a 一个函数是reentrant的 如果它可以被安全地递归或并行调用 要想成为 reentrant式的函数 该函数不能含有 或使用 静态 或全局 数据 来存储函数调用过程中的状态信 息 也不能返回指向静态数据的指针 它只能使用由调用者提供的数据 当然也不能调用non reentrant 函数 Thread safety是多线程编程中的概念 thread safe函数是指那些能够被多个线程同时并发地正确执 行的函数 reentrant函数与是不是多线程无关 如果是reentrant函数 那么要求即使是同一个进程 或线 程 同时多次进入该函数时 该函数仍能够正确的运作 该要求还蕴含着 如果是在多线程环境中 不同的两 个线程同时进入该函数时 该函数也能够正确的运作 reentrant的要求比thread safe的要求更加严格 reentrant的函数必是thread safe的 而thread safe的函数未必是reentrant的 b malloc不是可重入 的 但是线程安全的 第叁部分 编程题 15 a 定义一个宏 用於返回两个变量中值较大的那个 此宏是否有副作用 请举例说明 b 定义两个宏 一 个用来将一变量的第 个 bit 最低有效位编号为 0 置 0 而另一个则将第 个 bit 置 1 不必考虑 的合法性 提示及答案 a define MAX a b a b a b 有副作用 比如参数是a 则可 能会递增两次 b define BIT n 1 n define BIT CLR var n var lhs rhs rhs tmp b template void swap T lhs rhs rhs tmp 17 编程求 1 2 3 4 5 n 的值 函数原型为 int sum int n 提示及答案 int sum int n 判斷參數有效性 if n 4 是否是质数 如果 能被 到 n之中的任一质数整除 则 是合数 否则是质数 据此可以较容易求出前15个质数 然后用查表法获取结果 求數組元素個數 define COUNTOF array sizeof array sizeof array 0 int find prime int n 質數表 static const int prime seq 1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 參數校驗 if n 0 COUNTOF prime seq n return 0 return prime seq n 1 第肆部分 选作题 19 编程求两个正整数 m 和 n的最大公约数和最小公倍数 不必考虑溢出 提示及答案 参数检查必不可少 另外最朴素的求最大公约数的做法就是辗转相除 若要高效率则 可以参考 九章算术 的 方田 章之约分术 还有TAOCP的节4 5 2对此有所讨论 而最大公倍数则为 m n gcd m n 顺便给blog做个广告 3B5F636EB1E92A28 373 entry 其中有这两种算法的C C 实现 20 Josephus problem 设编号为 1 2 n的 n 个人围坐一圈 约定编号为 1的人从 1开始报数 数到 m 的那个 人出列 它的下一位又从 1开始报数 数到 m 的那个人又出列 依次类推 直到只剩一个人为止 求这个人的编 号 提示及答案 最基本的处理方式是循环链表 每个节点都带有原始编号 不断从链表中删除节点 直到只剩一个节点 其编号即为所求 当然也可以用数组 不过遍历过程中可能会频繁访问无效元素 这两种 方式都需要申请内存 需要检查分配内存的结果 其时间复杂度均为 O m n 另一种思路 递推 当n 个人少了一个人时 问题变为人数为n 1的子问题 假设n

温馨提示

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

评论

0/150

提交评论