[精品]程序设计试题
参赛人员须知: 1. 本次比赛统一使用C语言编程,编程环境为VC++6.0; 2. 本次比赛将持续4个小时,上午9:00 - 13:00o比赛期间不允许查阅资料,也不允许 参赛队员之间相互讨论或抄袭,如有雷同,立即取消比赛资格 3. 本次比赛编程部分统一使用文件格式进行输入输出操作,请严格按照题目要求编写输 入输出文件; 4. 试卷提交格式:所有参赛队员在桌面新建一个文件夹,文件夹请以”姓名班级”的格 式命名。此文件夹包括两部分:一个word文档,命名为“思考题”,用于提交思考题部分 答案;一个子文件夹,命名为“编程题”,用于提交编程部分源代码(源代码请以题目标题命 名)。 注:请各参赛人员仔细查看“参赛队员须知”,不符合要求的提交格式将不能计入成绩; 思考题(5 *8 = 40分): (请用文字或公式详细叙述解题过程和答案) 1、一个经理有三个女儿,三个女儿的年龄加起来等于13,三个女儿的年龄乘起来等于经 理自己的年龄,有一个下属已知道经理的年龄,但仍不能确定经理三个女儿的年龄,这时 经理说只有一个女儿的头发是黑的,然后这个下属就知道了经理三个女儿的年龄。请问三 个女儿的年龄分别是多少?为什么? 2、有三个人去住旅馆,住三间房,每一间房$10元,于是他们一共付给老板$30,第二 天,老板觉得三间房只需要$25元就够了于是叫小弟退回$5给三位客人,谁知小弟贪心,只 退回每人$1,自己偷偷拿了$2,这样一来便等于那三位客人每人各花了九元,于是三个人 一共花了$27,再加上小弟独吞了不$2,总共是$29。可是当初他们三个人一共付出$30那 么还有$1呢? 3、有两位盲人,他们都各自买了两对黑袜和两对白袜,八对袜子的布质、大小完全相同, 而每对袜子都有一张商标纸连着。两位盲人不小心将八对袜子混在一起。他们每人怎样才 能取回黑袜和白袜各两对呢? 4、一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个 人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什 幺帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯, 没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有 劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子? 5、1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽 水? 编程题: 试题一•汉诺塔(40分)(只大二做) 问题描述: 古老的的汉诺塔问题是:用最少的步数将N个半径互不相等的圆盘从1号柱利用2号柱 全部移动到3号柱,在移动的过程中最小盘适中在大盘的上面; 现在在增减一个条件:不允许直接把盘从1号柱移动到3号柱,也不允许直接把盘从3 号柱移动到1号柱; 把盘半径从小到大用广N编号。每种状态用N个整数表示,第i个整数表示i号盘所在 的柱的编号。则N=2是的移动方案为 (1, 1) >=(2, 1)>=(3, 1) >= (3, 2) >= (2, 2) >= (1, 2) >= (1, 3>= (2, 3) >= (3, 3) 初始状态为第0步,编程求在某步数时的状态; 输入格式:(输入文件名hanoi. in) 输入文件的第1行为整数T(l<=T<=50000),表示输入数据的组数; 接下来的T行,每行有两个整数N, M(l〈=N〈=19,0〈=M〈=移动N个圆盘所需的步数); 输出格式:(输出文件名hanoi. out) 输出文件共有T行; 对于每组输入数据,输出N个整数表示移动N个盘在M步是的状态,每两个数之间用一 个空格隔开,行首和行末不要有多余的空格; 输入输出数据样例: 输入(hanoi. in) 输出(hanoi. out) 4 1 1 2 0 1 2 2 5 1 1 1 3 0 2 1 1 31 试题二:九宫格(40分)(只大三做) 问题描述: 把广9的九个数字分别填在三行三列的方格中,使横、竖、对角线各方向的和相等, 请编程输出可以实现要求的所有组合。 输入格式:(输入文件名:stylebox. in) 输入文件为九宫格中允许填入的所有数字,即: 1 2 3 4 5 6 7 8 9(以空格隔开) 输出格式:(输出文件名:stylebox. out) 输岀文件为以每组3 (行)* 3(列)的格式输出的可以实现要求的所有组; 其中各个组合之间输出一行“**************************“间隔开来; 输入输出数据样例:(注:输出文件中的X表示广9中的数字) 输入(stylebox. in) 输出(stylebox. out) 123456789 XXX XXX XXX XXX XXX XXX 试题三:Alice and Bob;(50 分) 问题描述: Alice是一个聪明漂亮的小女孩。小男孩Bob很喜欢和她玩。 一天,Alice得到一个大的矩形,她想把它分隔成许多小方块。现在就有一个问题: 如果把大矩形分割成许多大小相同的正方形小块(分割后的大矩形不能有任何剩余),每个 小方块应该分多大?对Alice来说,这是一个很容易解决的问题。然而,她非常忙,于是 她向Bob寻求帮助。你知道Alice是一个如此可爱的小女孩,因此Bob显然不能拒绝她。但 是Bob却并不十分聪明,尤其是在数学上。所以,他现在需要你——个编程天才,提供帮 助。 Alice将向Bob提供这个大矩形的长和宽,然后Bob告诉她小方块的最大边长; 所有的数据都是以它们的二进制形式表示; 输入格式:(输入文件名:alice. in) 输入文件第一行是一个正整数,表示输入数据的组数。 每组数据包括两个整数L和W的二进制形式,用来表示大矩形的长和宽 (0