本帖最后由 snowhorse712 于 2012-4-4 09:13 编辑
满分20分 学术一,二,三题/ 专业一,二,四题 要求添加足够多的注释 一, 精确计算阶乘. 一个32 位整型变量无法精确表示大数的阶乘, 但一个整型数组却可表示. 算法思路: 当阶乘结果为不超过10的4次方的十进制正整数时, 可用一个整型数组( int nFactorial[4] )来依次存放阶乘的每一位数字. 比如, 5!=120可被记录为nFactorial[0]= 0, nFactorial[1] = 2, nFactorial[2] = 1, nFactorial[3] = 0. 当已计算出k的阶乘, 要计算(k+1)的阶乘时, 将记录k的阶乘的数组的每一位都与(k+1)相乘, 乘积依然存在数组的对应位上. 最后, 从最低位开始, 依次向高位循环处理每个位中大于9的数. 若数大于9,则需要进位. 将数的10的倍数进到高一位上,将数的小于10的余数存在原来的位中.一直到所有位中的数都小于10为止. (1)(6分) 按此思路, 当已知阶乘结果为一个不超过10的1000次方的十进制整数时, 写出计算正整数阶乘的完整C/C++代码. 输入: 键盘输入一个正整数 输出: 显示输入正整数的阶乘 (2)(2分) 完善代码, 实现键盘输入是否满足要求的检查功能. (3)(2分) 写出几种测试用例. 二, 有一个浮点型数组记录了1000个浮点数(float fData[1000]). (1)(3分) 编写C/C++代码, 求出这1000个数中最大的10个数. (2)(3分) 写出能实现从1000亿个数中寻找最大的10个数的算法思路. 三, 已知一个指向单向链表的某个非头非尾节点的指针(node* pCurrent). pCurrent 指向的地址中仅保存2个指针, 一个是指向下一个节点的Next指针(pCurrent-> Next), 另一个是指向节点本身数据的Data指针(pCurrent-> Data). 编写一个C/C++函数, 实现以下功能: (1)(2分) 保留链表的原有顺序,在原链表中删除这个已知节点的下一个节点. (2)(2分) 保留链表的原有顺序,在原链表中删除这个已知节点. 四, 异或运算的应用. (1) (2分) 列举异或运算的性质. (2) (2分) 已知一个记录了1000个整数的整数型数组. 将这1000个整数打乱顺序后,只将其中的999个整数记录在另一个数组中.请利用异或运算的性质编写一个C/C++函数, 找出缺少的那一个整数. |