作者: snowhorse712 时间: 2012-4-3 09:35
标题: 2012图像所复试编程试卷(回忆)
本帖最后由 snowhorse712 于 2012-4-4 09:13 编辑
作者: snowhorse712 时间: 2012-4-3 10:04
本帖最后由 snowhorse712 于 2012-4-10 10:00 编辑
第一题,(1)初始化数组, 键盘输入, 按照思路循环计算, 进位,输出结果. 输出结果时,高位中的多余的零应去掉,然后,从首个有效位到最低位依次输出数组.
(2)用scanf("%s", cs)来接受键盘输入的字符串, 再用atoi()将字符串转换为整数n, 再用itoa()将n转换为字符串css, 用strcmp()比较cs和css, 相同说明输入的是整数,不同则非法. 但不知如何确定输入的整数是否太大...感觉要用到数学知识(斯特灵公式...)...
(3)测试用例,
3.1 下边界0!=1!=1,
3.2 合法值5!=120, 11!=...,
3.3 上边界460!, 461!(结果为1000位10进制整数的上界), 462!(越界)
3.4 非法值 (abc)!提示非法, (1.3)!, (-0)!提示非法,
3.5 退出条件 (-2)!, (-1)!...
等...
补充内容 (2012-4-12 14:45):
450就越界鸟...449!有998位
作者: snowhorse712 时间: 2012-4-3 11:17
第二题,(1)部分排序.
(2)分组,1000个一组, 每组求前10. 然后,每 100个组的结果再合并为一组, 每组再求前10, ...,直到最后求出整体前10.
疑问:前10个数...应该数值可以相同哈
作者: snowhorse712 时间: 2012-4-3 13:08
第三题,(1) node* pTemp = pCurrent->Next; pCurrent->Next = pTemp->Next; delete(pTemp->Data);pTemp->Data=NULL;delete(pTemp);pTemp=NULL;
作者: kunzi55 时间: 2012-4-3 15:30
总的来说,复试编程还是很考能力的。 相比微机就简单多了全是概念 哈哈
作者: snowhorse712 时间: 2012-4-4 08:47
本帖最后由 snowhorse712 于 2012-4-10 09:58 编辑
编程初看,都能做.但要得高分,还真要能力.
第三题(2),应该是不知道链表的头.否则,和第一题解法一样就行了. 但不知道头咋知道指向pCurrent的指针哪...
昨晚想了一个办法.
... pTemp0 = pCurrent->Data;(这里题目缺少Data指针的具体类型哈...)
node* pTemp1 = pCurrent->Next;
pCurrent->Next = pTemp1->Next;
pCurrent->Data = pTemp1->Data;
if(pTemp0 != NULL){delete pTemp0; pTemp0 = NULL;}
if(pTemp1->Data != NULL){delete pTemp1->Data; pTemp1->Data = NULL;}
if(pTemp1 != NULL){delete pTemp1; pTemp1 = NULL;}
补充内容 (2012-4-11 11:03):
这个链表应该没有环,否则,删某个节点,可能会出问题..
作者: snowhorse712 时间: 2012-4-4 08:56
第四题(1)a^0=a, a^a = 0, a^b=b^a, a^(b^c)=(a^b)^c[同数异或为0,数异或0还为该数,异或运算可交换,异或运算满足结合律]
(2)int MyFind(int nArray0[1000], int nArray1[999])
{
int nResult = nArray0[0];
int i;
for(i=1;i<1000;i++)
{nResult ^= nArray0[i];}
for(i=0;i<999;i++)
{nResult ^= nArray1[i];}
return nResult;
}