📄 c入门题目.txt
字号:
┌─┬──┬─┐ ┌──┬──┐
│ │ │ │ 1224 │ │ │ 1122
│ ├──┤ │ ├──┼──┤
│ │ │ │ 1334 │ │ │ 3344
├─┼──┼─┤ ├──┼──┤
│ │ │ │ 5668 │ │ │ 5566
│ ├──┤ │ ├──┼──┤
│ │ │ │ 5778 │ │ │ 7788
└─┴──┴─┘ └──┴──┘
25. (量水) 用存水为M,N升的两个罐子,量出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个皇后,使其不能互相攻击,即任意
两个皇后不能处在棋盘的同一行,同一列,同一斜线上,试问共有多少种摆法?
允许将相邻两个棋子互换位置,最后使队形成黑白交替排列,试编程实现该操作。
26. (八数码问题) 8个编有数码1 ̄8的滑牌,能在3*3的井字格中滑动。
井字格中有一格是空格,用0表示,因而空格周围的数码滑牌都可能滑到空格中去.
下图是数码滑牌在井字格中的两种状态:
┎─┬─┬─┒ ┏━┯━┯━┓
┃2 │8 │3 ┃ ┃1 │2 │3 ┃
┠─┼─┼─┨ ┠─┼─┼─┨
┃1 │6 │4 ┃ ----> ┃8 │0 │4 ┃
┠─┼─┼─┨ ┠─┼─┼─┨
┃7 │0 │5 ┃ ┃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 个字符)。排版时以单词为基本单位。单词由不含空格的任意字符组
成,是长度小于20个字符的串。空格符是分隔单词的唯一字符,在输入时连续的空格
符在处理时应先化简为单个空格符。在排版前应先输入,排版后每行的字符数为N,排
版后将整理好的文章按行输出。输出时不能将一个完整的单词截断,并要求输出的总行
数最小。将每个不足N个字符的行用空格补足,填充空格符的方式有以下三种。
1)将填充的空格符置于每行的末尾,并要求每行的起始为单词。
2)将填充的空格符置于每行的开始,并要求每行的末尾为单词。
3)将填充的空格符平均分配在每行中,并保证行的起始和末尾均为单词。
30. 某机要部门安装了电子锁。M个工作人员每人发一张磁卡,卡上有开锁的密码特征。
为了确保安全,规定至少要有N个人同时使用各自的磁卡才能将锁打开。问电子锁上至
少要有多少种特征? 每个人的磁卡上至少要有多少特征? 如果特征的编号以小写英文字
母表示,将每个人的磁卡的特征编号打印出来,要求输出的电子锁的总特征数最少。
设 3<=M<=7, 1<=N<=4, M与N由键盘输入,工作人员编号用 1#,2#,…表示.
15. 已知6个城市,用c[i,j]表示从i城市到城市j是否有单向的直达汽车
(1=<i〈=6,1〈=j〈=6), c[i,j]=1 表示城市i到城市j有单向直达汽
车; 否则 c[i,j]=0. 试编制程序,对于给出的城市代号i,打印出从该城市出
发乘车(包括转车)可以到达的所有城市。
31. 甲乙两人从24枚棋子中轮流取子,甲先取,规定每次所取的枚数不能多于上
一个人所取的枚数,也不可不取。
(1)甲第一次取多少枚才能保证甲取得最后一枚,当然,他也不能第一次就把
所有棋子都取走。
(2)讨论棋子总数N(一定是偶数)从6到30的各种情况。讨论内容包括:
对各个N,是否存在一个小于N的枚数M,甲第一次取M枚后就能保证甲如果策略
正确,一定能取到最后一枚棋子。
32. ( 走棋 ) 一个4*4的方阵如图。有一个小卒从上往下走。走至格子1后就
不能走动,走至0后,若下方为1,则向左或向右走,下方为0,则向下走。求所
有走法。
┌─┬─┬─┬─┐
│1 │0 │0 │0 │
├─┼─┼─┼─┤
│0 │0 │1 │0 │
├─┼─┼─┼─┤
│0 │1 │0 │0 │
├─┼─┼─┼─┤
│1 │0 │0 │0 │
└─┴─┴─┴─┘
33. ( 野人与传教士 ) 设有三个传教士和三个野人来到河边,打算乘一只船从右
岸渡到左岸去。该船最大负载能力为两人,在任何时候,如果野人人数超过传教士
人数,那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过
河去呢?
34. ( 取棋子 ) 设有N颗棋子,由人和计算机轮流从中取走若干颗。每方每次最
多取K颗,最少取1颗 (K值不能超过总数的一半,也不能小于1)。试编写一程
序使计算机有较多的获胜机会。
屏幕输入提示:
(1) 输入竞赛规则:A. 取最后一颗棋子的那一方为败.
B. 取最后一颗棋子的那一方为胜.
(2) 总共有多少颗棋子?
(3) 一次最多取几颗?
(4) 谁先取?
(5) 每个回合都应显示: A. 你取几颗?
B. 我取走……颗,还剩……颗.
(6) 竞赛过程中发生违例时,打印出: 竞赛无法进行下去!
(7) 竞赛结束后打印:
I win!(我胜!)或 You win!(你胜!)。
35. ( Grundy博弈 ) 在两位选手面前放着一堆铜币。第一位选手把原堆分成不相
等的两堆。然后每个选手轮流地这样做,即当轮到某一方分时, 他把已被分开的任
一堆再分成不相等的两堆。博弈这样一直进行下去,直到每一堆都只剩下一个或两
个铜币为止,这时博弈结束。规定首先遇到这种情况的选手为输。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -