logo资料库

C++经典编程题.doc

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
C++经典编程题 1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不 D F G 同字母。编程求出这些数字并且打出这个数字的 + D F G 算术计算竖式。 ─────── X Y Z D E 2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些 人参加了竞赛: (1)A参加时,B也参加; (2)B和C只有一个人参加; (3)C和D或者都参加,或者都不参加; (4)D和E中至少有一个人参加; (5)如果E参加,那么A和D也都参加。 3. 打印一个 N*N 的方阵,N为每边 字符的个数(3<N<20=, 要求最 外一层为"T", 第二层为"J", 从第三层 起每层依次打印数字 1,2,3,... (右图以N为15为例) N=15 打印出下面图形 TTTTTTTTTTTTTTT TJJJJJJJJJJJJJT TJ11111111111JT TJ12222222221JT TJ12333333321JT TJ12344444321JT TJ12345554321JT TJ12345654321JT TJ12345554321JT TJ12344444321JT TJ12333333321JT TJ12222222221JT TJ11111111111JT TJJJJJJJJJJJJJT
TTTTTTTTTTTTTTT 4. 在N行N列的数阵中, 数K(1〈=K〈=N)在每行和每列中出现且仅 出现一次,这样的数阵叫N阶拉丁方阵。例如下图就是一个五阶拉丁方阵。 编一程序,从键盘输入N值后,打印出所有不同的N阶拉丁方阵,并统计个数。 1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4 5. 输入一个十进数,将其转换成 N 进制数(0
数进行赔偿,即赢者手中有多少根火柴棍,输者就赔偿多少根。现知道玩过四次后, 每人恰好输过一次, 而且每人手中都正好有16根火柴。问此四人做游戏前手中各有 多少根火柴? 编程解决此问题。 10. 如图1所示,编写程序计算 大大小小正方形共有多少?当最小 正方行边长为1时,它们的总面积 共为多少? ┎┰┰┰┰┰┰┰┰┰┒ ┠╂╂╂╂╂╂╂╂╂┨ ┠╂╂╂╂╂╂╂╂╂┨ ┠╂╂╂╂╂╂╂╂╂┨ ┠╂╂╂╂╂╂╂╂╂┨ ┠╂╂╂╂╂╂╂╂╂┨ ┠╂╂╂╂╂╂╂╂╂┨ ┠╂╂╂╂╂╂╂╂╂┨ ┠╂╂╂╂╂╂╂╂╂┨ ┠╂╂╂╂╂╂╂╂╂┨ ┖┸┸┸┸┸┸┸┸┸┚ 11. 巧排数字。将1、2、...、20这20个数排成一排,使得相邻的两个数之 和为一个素数,且首尾两数字之和也为一个素数。编程打印出所有的排法。 12. 下图是一个集装箱仓库,阴影部分表示有集装箱存放不能通过,无阴影处为临时通 道。当有人要从入口处到达出口处时,必须寻找可通过路线,请你找出可完成这个过程 的最方便(即用最短路线)到达出口处的路径。 ┎┰┰┰入口┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┒ ┠╂╂╂──╂╂╂╂┸┸╂┸┸╂┸┸╂┸┸╂╂╂╂┸┸╂╂╂┨ ┠╂╂╂──╂┸┸╂──╂┰┰╂┰┰╂──╂╂╂╂──╂╂╂┨ ┠╂╂╂──╂┰┰╂┰┰╂╂╂╂╂╂╂──╂┸┸╂──╂╂╂┨ ┠╂╂╂──╂╂╂╂╂╂╂╂╂╂╂╂╂┰┰╂┰┰╂┰┰╂╂╂┨ ┠╂╂╂──╂┸┸╂┸┸╂┸┸╂┸┸╂┸┸╂┸┸╂┸┸╂╂╂┨ ┠╂╂╂──╂┰┰╂┰┰╂┰┰╂──╂┰┰╂──╂┰┰╂╂╂┨ ┠╂╂╂──╂╂╂╂╂╂╂╂╂╂──╂╂╂╂──╂╂╂╂╂╂┨ ┠╂╂╂──╂╂╂╂┸┸╂┸┸╂──╂╂╂╂──╂┸┸╂╂╂┨ ┠╂╂╂──╂╂╂╂┰┰╂┰┰╂┰┰╂╂╂╂┰┰╂──╂╂╂┨ ┖┸┸┸──┸┸┸┸┸┸┸┸┸┸┸┸┸┸┸┸┸┸┸出口┸┸┸┚ 13. 有 N 个硬币(N 为偶数)正面朝上排成一排,每次将 N-1 个硬币翻过来放在原位 置, 不断地重复上述过程,直到最后全部硬币翻成反面朝上为止。编程让计算机把 翻币的最简过程及翻币次数打印出来(用*代表正面,O 代表反面)。
14. 有黑白棋子各有N个(分别用*和O代替),按下图方式排列 ***...***OOO...OOO N个黑棋 N个白棋 允许将相邻两个棋子互换位置,最后使队形成黑白交替排列,试编程实现该操作。 15. 已知6个城市,用c[i,j]表示从i城市到城市j是否有单向的直达汽车 (1=<i〈=6,1〈=j〈=6), c[i,j]=1 表示城市i到城市j有单向直达汽 车; 否则 c[i,j]=0. 试编制程序,对于给出的城市代号i,打印出从该城市出 发乘车(包括转车)可以到达的所有城市。 16. 设有8枚硬币a,b,c,d,e,f,g,h,其中有一枚硬币是伪造的。 真伪硬币的区别仅是重量不同,可能重,可能轻。今要求以天平为工具,用最少的 比较次数挑出伪造硬币,并鉴定它是重还是轻。 17. 编写一个程序,当输入不超过60个字符组成的英文文字时,计算机将这个句子 中的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度 相同。例如: 输入: THE PRICE OFBREAD IS ¥1 25 PER POUND 输出: ABC DDEEE EFHIINO OP ¥1 25 PPR RRSTU 并且要求只对A到Z的字母重新排列,其它字符保持原来的状态。 18. 在一线性七个格位置的图上有两种不同颜色的棋子A,B. 排列如下图所示,中间 格的位置为空。 ┎─┰─┰─┰─┰─┰─┰─┒ ┃A┃A┃A┃ ┃B┃B┃B┃ ┖─┸─┸─┸─┸─┸─┸─┚
要求将A,B的现行位置交换,形成下图中的排列: ┎─┰─┰─┰─┰─┰─┰─┒ ┃B┃B┃B┃ ┃A┃A┃A┃ ┖─┸─┸─┸─┸─┸─┸─┚ 移动棋子的条件: (1) 每个格中只准放一个棋子。 (2) 任意一个棋子均可移动一格放入空格内。 (3) 一方的棋子均可跳过另一方的一个棋子进入空格。 (4) 任何棋子不得跳跃两个或两个以上棋子(无论颜色同异) (5) 任何一个颜色棋子只能向前跳,不准向后跳。 编程完成有关的移动,并且完成具有2N+1个格子的情形. 其中两种颜色各有 N个棋子,且中间为空格. 19. (背包问题) 有 N 件物品 d1,......dN,每件物品重量为 W1,..., WN (Wi > 0), 每件物品价值为 V1,......VN (Vi>0)。用这 N 件物品的某个子集 填空背包,使得所取物品的总重量<=TOTAL,并设法使得背包中物品的价值尽可 能高。 20. (N皇后) 在国际象棋的棋盘上放置N个皇后,使其不能互相攻击,即任意 两个皇后不能处在棋盘的同一行,同一列,同一斜线上,试问共有多少种摆法? 21. 请设计一个程序,由计算机把1.. ̄.8的八个自然数填入图中,使得横、 竖、对角任何两个相邻的小方格中的两个数是不连续的。(下图右侧的 4 个图 为禁止的情形). ┌─┐ │ │ ┌─┐ │4│ ┌─┐ │8│ ┌─┼─┼─┐ │ │ │ │ ├─┼─┼─┤ │ │ │ │ └─┼─┼─┘ └─┼─┐ ┌─┼─┘ │5│ │7│ └─┘ └─┘ ┌─┐ │6│ ┌─┬─┐ │ │ └─┘ ├─┤ │7│ │1│2│ └─┴─┘ └─┘
22. 在一个4*4的小方格(如图所示)中放置8个*号,使得每行每列放且 仅放两个*号。 ┌─┬─┬─┬─┐ │*│*│ │ │ ├─┼─┼─┼─┤ │*│ │*│ │ ├─┼─┼─┼─┤ │ │*│ │*│ ├─┼─┼─┼─┤ │ │ │*│*│ └─┴─┴─┴─┘ 求出所有的基本解。 23. (覆盖问题) 有边长为N(N为偶数)的正方形,请你用N^2/2个长为2, 宽为1的长方形,将它全部覆盖。编程打印出所有覆盖方法。如:N=4 ┌──┬──┐ ├──┼──┤ ┌─┬──┬─┐ │ │ │ │ 1224 │ │ │ 1122 │ ├──┤ │ │ │ │ │ 1334 │ │ │ 3344 ├─┼──┼─┤ │ │ │ │ 5668 │ │ │ 5566 │ ├──┤ │ │ │ │ │ 5778 │ │ │ 7788 └─┴──┴─┘ ├──┼──┤ ├──┼──┤ └──┴──┘ 24. 某地街道把城市分割成矩形方格,每一方格叫作块,某人从家中出发上班, 向东要走M块,向北要走N块,(见图)。请设计一个程序,由计算机寻找并 打印出所有的上班的路径。 单位 ┬ ┌─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ │ ├─┼─┼─┼─┼─┼─┼─┤
↓ │ │ │ │ │ │ │ │ N ├─┼─┼─┼─┼─┼─┼─┤ ↑ │ │ │ │ │ │ │ │ │ ├─┼─┼─┼─┼─┼─┼─┤ │ │ │ │ │ │ │ │ │ ┴ └─┴─┴─┴─┴─┴─┴─┘ 家 ├─────→M←─────┤ 25. (量水) 用存水为M,N升的两个罐子,量出A升水。 26. (八数码问题) 8个编有数码1 ̄8的滑牌,能在3*3的井字格中滑动。 井字格中有一格是空格,用0表示,因而空格周围的数码滑牌都可能滑到空格中去. 下图是数码滑牌在井字格中的两种状态: ┎─┬─┬─┒ ┃2 │8 │3 ┃ ┠─┼─┼─┨ ┃1 │6 │4 ┃ ----> ┠─┼─┼─┨ ┃7 │0 │5 ┃ ┗━┷━┷━┛ ┏━┯━┯━┓ ┃1 │2 │3 ┃ ┠─┼─┼─┨ ┃8 │0 │4 ┃ ┠─┼─┼─┨ ┃7 │6 │5 ┃ ┗━┷━┷━┛ 初始状态 目标状态 以左图为初始状态,右图为目标状态,请找出从初始状态到目标状态的滑牌移步 序列,具体要求: (1)输入初始状态和目标状态的数据; a、分别用两行输入上述两项数据: 例:Enter the initial state:2 8 3 1 6 4 7 0 5 Enter the final state:1 2 3 8 0 4 7 6 5 b、对输入数据应有查错和示错功能; (2)实现从初始状态到目标状态的转换(如不能实现,程序应输出不能实现 的提示信息); (3)输出结果,每移动一步都必须在屏幕上显示: a、移动每一步时的序号,最后一步的序号即为移动总步数; b、每一步移动后以3*3表格形式显示状态。 (4)要求能使移动步数尽可能少;
27. 给出一个有8个格子的表格,除3个格子外,每个格子中可放入一个数字,这 些数字取自自然数 1 到 5,放入格子中的数字不得相同,剩余的3个格子是空格 (用O表示)。图1是一个放数字与空格的特例。现要求编程实现从初始表格状态 变化到目标表格状态。初始状态和目标状态都是可变的(图1,图2所示的状态仅 是一个特例),由键盘输入格子中的数字(0 ̄5)。 移动规则: (1) 每一个数字只可以通过虚线移入相邻空格。如图1中,允许“2”左移入空 格,而不能上移进入上面空格。 (2) 只允许水平移动或垂直移动,不允许斜移。 (3) 移动后,该数字原先所在的格子变成空格。 实现目标: (1) 输入初始表格状态和目标表格状态的数据。 ① 分别在一行内输入上述两项数据; ② 对输入的数据应有查错和报错功能; (2) 实现从初始状态到目标状态的转换(如不能实现也应给出必要的说明)。 (3) 显示结果:每移动一步都应在屏幕上有如下信息: ① 显示每一步移动的序号。所以最后一步的序号就是移动的总步数。 ② 显示每一步移动前后的表格状态。 (4) 以最少的移动步数达到目标。 ┎─┰─┰─┒ ┃3┃4┃0┃ ┎─┰─┰─┒ ┃0┃0┃0┃ ┎─╂─╂ ╂─╂─┒ ┃0 1 0 2 5┃ ┖─┸─┸─┸─┸─┚ ┎─╂─╂ ╂─╂─┒ ┃1 2 3 4 5┃ ┖─┸─┸─┸─┸─┚ 图 10-1 图 10-2 初始状态A 目标状态B 28. n枚银币 C1,C2,...,Cn, 其中有一块不合格,不合格的银币比正常的要重。现用 一天平找出不合格的一块,要求在最坏的情况下,用的天平次数最少。 29. 把一段文章按要求排版。文章的输入方式为:由键盘输入一段以回车符结束的文章 (最大长度 2000 个字符)。排版时以单词为基本单位。单词由不含空格的任意字符组
分享到:
收藏