1.某机要部门安装了电子锁。M个工作人员每人发一张磁卡,卡上有开锁的密码特征。

为了确保安全,规定至少要有N个人同时使用各自的磁卡才能将锁打开。问电子锁上至 少要有多少种特征? 每个人的磁卡上至少要有多少特征? 如果特征的编号以小写英文字母表示,将每个人的磁卡的特征编号打印出来,要求输出的电子锁的总特征数最少。

设 3<=M<=7, 1<=N<=4, M与N由键盘输入,工作人员编号用 1#,2#,...表示.

2.甲乙两人从24枚棋子中轮流取子,甲先取,规定每次所取的枚数不能多于上 一个人所取的枚数,也不可不取。

(1)甲第一次取多少枚才能保证甲取得最后一枚,当然,他也不能第一次就把

所有棋子都取走。

(2)讨论棋子总数N(一定是偶数)从6到30的各种情况。讨论内容包括:

对各个N,是否存在一个小于N的枚数M,甲第一次取M枚后就能保证甲如果策略 正确,一定能取到最后一枚棋子。

3. ( 走棋 ) 一个4*4的方阵如图。有一个小卒从上往下走。走至格子1后就

不能走动,走至0后,若下方为1,则向左或向右走,下方为0,则向下走。求所 有走法。

┌─┬─┬─┬─┐

│1 │0 │0 │0 │

├─┼─┼─┼─┤

│0 │0 │1 │0 │

├─┼─┼─┼─┤

│0 │1 │0 │0 │

├─┼─┼─┼─┤

│1 │0 │0 │0 │

└─┴─┴─┴─┘

4. ( 野人与传教士 ) 设有三个传教士和三个野人来到河边,打算乘一只船从右

岸渡到左岸去。该船最大负载能力为两人,在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过 河去呢?

5. ( 取棋子 ) 设有N颗棋子,由人和计算机轮流从中取走若干颗。每方每次最

多取K颗,最少取1颗 (K值不能超过总数的一半,也不能小于1)。试编写一程 序使计算机有较多的获胜机会。

屏幕输入提示:

(1) 输入竞赛规则:A. 取最后一颗棋子的那一方为败.

B. 取最后一颗棋子的那一方为胜.

(2) 总共有多少颗棋子?

(3) 一次最多取几颗?

(4) 谁先取?

(5) 每个回合都应显示: A. 你取几颗?

B. 我取走......颗,还剩......颗.

(6) 竞赛过程中发生违例时,打印出: 竞赛无法进行下去!

(7) 竞赛结束后打印:

I win!(我胜!)或 You win!(你胜!)。

6. ( Grundy博弈 ) 在两位选手面前放着一堆铜币。第一位选手把原堆分成不相

等的两堆。然后每个选手轮流地这样做,即当轮到某一方分时, 他把已被分开的任一堆再分成不相等的两堆。博弈这样一直进行下去,直到每一堆都只剩下一个或两个铜币为止,这时博弈结束。规定首先遇到这种情况的选手为输。

7. 猴子选大王:

① N 只猴子站成一行,每隔 M 只从头到尾报数,反复进行,报过数的退出,打

印每次退出的猴子的编号,直到剩下一只为止。

② N 只猴子站成一行,每 M 只报数。先从头到尾,报到尾后,再返回从尾到头报数,打印每次方向及过程,直到剩下二只时,以排到后面的(指报数方向)为大王。

③ N 只猴子围成一圈,从第 P 个开始,每隔 M 只报数,打印每次过程,只剩下 一个时为大王。

8. 已知 N 个正整数满足 K1+K2+...+Kn=M。求一组最佳的分解,使得

K1*K2*....*Kn 为最大。

例如:N=2时,给定 K1+K2=6,当 K1=3,K2=3 时,K1*K2=9 为最大

9. 有一集合中有 N 个元素,每个元素均为自然数。给定一个 total (假设每个

元素值均小于total),求满足条件的所有子集,子集中各元素之和应等于total。

10. 一个集合满足如下条件:

(1)1是集合的元素;

(2) 若 P 是集合的元素,则 2*P+1,4*P+5 也是集合的元素。

求:此集合中最小的 K 个元素。

③ 对ABC作全排列而得的六个三位数之和为 2886。

11. 一个整型变量只能用来存贮较小的 N!的值,当 N 较大时,可将阶乘值中的

每一个数字放在一个一维数组的一个元素中。使用这方法,打印:

① N!的值;

② N!-M!(M>N);

③ N!+M!

12. (合并链表) 已知两个链表 AN={a1,a2,...an}, BN={b1,b2,...bm}, 将其合并

为一个链表 CN={a1,b1,a2,b2,...}

13. (算术表达式求值) 输入一个由数字、+,-,*,/ 及括号组成的算术表达式,

求其值。

14. 对于次数很高,但项目很少的多项式,可用链表来表示。

例如:X^1000-76*X^76+3*X^3-7可表示为

┌─┬──┬─┐ ┌──┬─┬─┐ ┌─┬─┬─┐ ┌─┬─┬──┐

│1 │1000│ ┼→│-76 │78│ ┼→ │3 │3 │ ┼→│-7│0 │ NIL│

└─┴──┴─┘ └──┴─┴─┘ └─┴─┴─┘ └─┴─┴──┘

在此方式下,编程完成两个多项式的加法与乘法。

15. (一元多项式加法) 实现两个整系数一元多项式的加法。例如, 对于多项式

5*X^6+4*X^3-7*X^4+1 与多项式 50*X^2+4*X, 运算结果为:

5*X^6-7*X^4+4*X^3+50*X^2+4*X+1。

程序要求:键盘输入多项式的各项系数及指数,每项系数及指数为一组数据(系

数及指数之一可为零),以'0,0'结束一个多项式的输入,结果按降幂排列,同类

项要合并(指数最大不超过30)。

上例第一式的输入为: 5,6

4,3

-7,4

1,0

0,0

输出结果应为:5*x^6-7*x^4+4*x^3+50*x^2+4*x+1.

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为每边 N=15 打印出下面图形

字符的个数(3<N<20), 要求最 TTTTTTTTTTTTTTT

外一层为"T", 第二层为"J", 从第三层 TJJJJJJJJJJJJJT

起每层依次打印数字 1,2,3,... TJ11111111111JT

(右图以N为15为例) 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

6. 矩阵中填数. 当给出 N*N 的矩阵,要求用程序填入下列形式的数:

① 倒填,例如N=5 ② 蛇形填数 ③ 回转填数

┌─┬─┬─┬─┬─┐ ┌─┬─┬─┬─┬─┐ ┌─┬─┬─┬─┬─┐

│25│24│23│22│21│ │ 1│ 3│ 4│10│11│ │ 1│16│15│14│13│

├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤

│20│19│18│17│16│ │ 2│ 5│ 9│12│19│ │ 2│17│24│23│12│

├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤

│15│14│13│12│11│ │ 6│ 8│13│18│20│ │ 3│18│25│22│11│

├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤

│10│ 9│ 8│ 7│ 6│ │ 7│14│17│21│24│ │ 4│19│20│21│10│

├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤

│ 5│ 4│ 3│ 2│ 1│ │15│16│22│23│25│ │ 5│ 6│ 7│ 8│ 9│

└─┴─┴─┴─┴─┘ └─┴─┴─┴─┴─┘ └─┴─┴─┴─┴─┘

7. 读入一行文本,包含若干个单词(以空格间隔,%结尾)。将其中以 A 开头的

单词与以 N 结尾的单词,用头尾交换的办法予以置换。

8. 输入两个正整数X,Y,将X,Y化为二进制数,然后将这两个二进制数作二进

制加法运算,再将结果化为十进制数输出。

9. 四人玩火柴棍游戏,每一次都是三个人赢,一个人输。输的人要按赢者手中的火柴

数进行赔偿,即赢者手中有多少根火柴棍,输者就赔偿多少根。现知道玩过四次后,

每人恰好输过一次, 而且每人手中都正好有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=

车; 否则 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│ ┌─┬─┐

│ │ ├─┤ │1│2│

└─┘ │7│ └─┴─┘

└─┘

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 │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#,...表示.

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博弈 ) 在两位选手面前放着一堆铜币。第一位选手把原堆分成不相

等的两堆。然后每个选手轮流地这样做,即当轮到某一方分时, 他把已被分开的任

一堆再分成不相等的两堆。博弈这样一直进行下去,直到每一堆都只剩下一个或两

个铜币为止,这时博弈结束。规定首先遇到这种情况的选手为输。

36. 猴子选大王:

① N 只猴子站成一行,每隔 M 只从头到尾报数,反复进行,报过数的退出,打

印每次退出的猴子的编号,直到剩下一只为止。

② N 只猴子站成一行,每 M 只报数。先从头到尾,报到尾后,再返回从尾到头

报数,打印每次方向及过程,直到剩下二只时,以排到后面的(指报数方向)为大王。

③ N 只猴子围成一圈,从第 P 个开始,每隔 M 只报数,打印每次过程,只剩下

一个时为大王。

37. 已知 N 个正整数满足 K1+K2+...+Kn=M。求一组最佳的分解,使得

K1*K2*....*Kn 为最大。

例如:N=2时,给定 K1+K2=6,当 K1=3,K2=3 时,K1*K2=9 为最大

38. 有一集合中有 N 个元素,每个元素均为自然数。给定一个 total (假设每个

元素值均小于total),求满足条件的所有子集,子集中各元素之和应等于total。

39. 一个集合满足如下条件:

(1)1是集合的元素;

(2) 若 P 是集合的元素,则 2*P+1,4*P+5 也是集合的元素。

求:此集合中最小的 K 个元素。

③ 对ABC作全排列而得的六个三位数之和为 2886。

40. 一个整型变量只能用来存贮较小的 N!的值,当 N 较大时,可将阶乘值中的

每一个数字放在一个一维数组的一个元素中。使用这方法,打印:

① N!的值;

② N!-M!(M>N);

③ N!+M!

41. (合并链表) 已知两个链表 AN={a1,a2,...an}, BN={b1,b2,...bm}, 将其合并

为一个链表 CN={a1,b1,a2,b2,...}

42. (算术表达式求值) 输入一个由数字、+,-,*,/ 及括号组成的算术表达式,

求其值。

43. 对于次数很高,但项目很少的多项式,可用链表来表示。

例如:X^1000-76*X^76+3*X^3-7可表示为

┌─┬──┬─┐ ┌──┬─┬─┐ ┌─┬─┬─┐ ┌─┬─┬──┐

│1 │1000│ ┼→│-76 │78│ ┼→ │3 │3 │ ┼→│-7│0 │ NIL│

└─┴──┴─┘ └──┴─┴─┘ └─┴─┴─┘ └─┴─┴──┘

在此方式下,编程完成两个多项式的加法与乘法。

44. (一元多项式加法) 实现两个整系数一元多项式的加法。例如, 对于多项式

5*X^6+4*X^3-7*X^4+1 与多项式 50*X^2+4*X, 运算结果为:

5*X^6-7*X^4+4*X^3+50*X^2+4*X+1。

程序要求:键盘输入多项式的各项系数及指数,每项系数及指数为一组数据(系

数及指数之一可为零),以'0,0'结束一个多项式的输入,结果按降幂排列,同类

项要合并(指数最大不超过30)。

上例第一式的输入为: 5,6

4,3

-7,4

1,0

0,0

输出结果应为:5*x^6-7*x^4+4*x^3+50*x^2+4*x+1.

45. (数列的最小代价) 给定一个正整数序列,例如:4,1,2,3, 不改变数的位置把

它们相加, 并且由括号来标记每一次加法所得到的和。例如:((4+1)+(2+3))=

((5)+(5))=10. 除去原数4、1、2、3之外,其余都为中间结果,如:5,5,10, 将中

间结果相加,得到:5+5+10=20, 数 20 称为此数列的一个代价。对于另一种算法:

(4+((1+2)+3))=(4+((3+3))=(4+(6))=10, 得到数列的另一个代价为:3+6+10=19.

若给出 N 个数的数列,求出此数列的最小代价。

46. 设有一个字符串,长度小于 100,且全部以英文字母组成。对字串中的每个字

母可用 0,1,2 三个数字进行编码,且数字可以重复使用。

程序要求:(1) 输入字符串,并能判断输入是否有错;

(2) 输出对应的编码表及码长,要求字串的编码总长度为最短;

(3) 根据上述编码表,给出一些编码,然后求出其原字符串。

例如:输入的字符为:ABCBAAADDEF

其对应的编码表为:

A: 2 B: 10

C: 11 D: 12

E: 00 F: O1

对应的编码为:210111022212120001 总码长为:18

根据该编码,给出编码:010001121110222 则输出字串:FEFDCBAAAA.

47. 某些密码由 N 个英文字母组成(N〈26), 每个字母的平均使用率为:W1,W2,...

,Wn, 要求编程完成下列任务:

① 键入英文字母及个数;

② 键入N个英文字母的使用频率;

③ 用二进制数对该N个英文字母进行编码(最短,无二义性);

④ 键入字母短文(单词用空格区分),输出相应编码;

⑤ 键入二进制编码短文,输出译文。

48. 将4个红球,3个白球与3个黄球排成一排,共有多少种排法?

49. 有面值为 M..N 的邮票各一枚,共能拼出多少不同的面额。

50. 有一个四阶方阵,随机产生 1..16 这 16 个自然数(不重复),依次填入每

个方格中。要求用最少的对调次数,使每一行、每一列以及对角线上的四个数之和

均相等。打印每一次对调的过程。

51. 微型蓝球赛. 甲,乙两队进行蓝球比赛,结果甲队以S:T 获胜.(T

由键盘输入). 比赛中, 甲队得分始终领先(严格大于乙队). 规定以任何方式进一

球都只得一分. 编程序打印该比赛的每一种可能的不同的得分过程, 以及所有不同

过程的总数.

52. 求两整型数组错位相加的最大面积.

设整型数组 C 具有 N 个分量: C=(C1,C2,...,CN), 两相连分量(C[I],C[I+1])

可计算一个面积: 若C[I],C[I+1]同号, 则面积 SI=abs(C[I]+C[I+1])/2, 否则,面

积等于 (abs(a*C[I])+abs(b*C[I+1]))/2, 其中, a>0,b>0,a+b=1 (详见下图),数

组 C 的面积 A=S[1]+S[2]+...+S[N-1].

编程要求如下:

从键盘输入 N, 再输入两个具有 N 个分量的数组: A1,A2:ARRAY [1..N] OF

INTEGER; 将 A1,A2 错位相加(详见后面的例子)得数组A3, 求 A3 的面积.编程给

出一个错位相加的方案, 使 A3 的面积最大.

例: 设 N=3, A1=(3,7,2), A2=(-5,7,-4), 则应考虑 9 种情况:

(1) (2)

A1 3 7 2 3 7 2

A2 -5 7 -4 -5 7 -4

A3 3 7 2 0 -5 7 -4 3 7 2 -5 7 -4

(3) (9)

A1 3 7 2 3 7 2

A2 -5 7 -4 ...... -5 7 -4

A3 3 7 -3 7 -4 -5 7 -4 0 3 7 2

53. (工作安排问题) 现有 N (N≤8) 件工作, 分别由 N 个人完成, 每人都完成一

件,且只完成一件, 每人完成不同工作的时间不同. 试设计一种分配工作方案, 使

完成 N 件工作所需的总时间最少.

原始数据由文本文件 EXAM1.TXT 给出, 其格式如下:

第 1 行: 工作任务数(N)

第 2 -- N+1 行: 第 i+1 行为第 i 个人完成各件工作所需的时间. 以上各数

均为不超过 1000 的正整数.

计算结果可直接在屏幕上输出: 第一行为工作分配方案, 共 N 组, 每组数据的

形式为 a-b, 其中 a 为工作人员编号, b 为他应完成的工作序号.

例: 设 EXAM1.TXT 的数据为:

4

2 15 13 4

10 4 14 15

9 14 16 13

7 8 11 9

对此, 一个正确的输出可以是

1-4, 2-2, 3-1, 4-3

TOTAL=28

54. 求N个字符串的最长公共子串,N<=20,字符串长度不超过255。

例如:N=3,由键盘依次输入三个字符串为

What is local bus ?

Name some local buses.

local bus is a high speed I/O bus close to the processer.

则最长公共子串为"local bus"。

( 参看程序 9 )

55. (液晶显示) 下图是用液晶七笔阿拉数字表示的十个数字,我们把横和竖的一

个短划都称为一笔,即7有3笔,8有7笔等。请把这十个数字重新排列,要做到

两相邻数字都可以由另一个数字加上几笔或减去几笔组成,但不能又加又减。比如

7→3是允许的,7→2不允许。编程打印出所有可能的排列。

如:4107395682。

56. (N阶梵塔) 有K根棒,第一根上放N片大小不等的圆盘,并保持上小下大的

顺序。现将N片圆盘从第1根移至第K根,移动中均保持上小下大的顺序,问最少

移几次方得结果,求出移动方案。

c语言作文的题目_C语言入门题相关推荐

  1. c语言作文的题目_c语言练习题目

    解题报告写: 1.2.3.4.5.6 ,不写挑战题 1. 小李发奖金 ( money.cpp/pas/c ) [题目描述] 当然打台球只是小李的休闲娱乐活动, 对待他的本职工作, 他还是非常兢兢业业的 ...

  2. c语言作文的题目_话题作文题目大全

    1 话题作文题目大全 话题作文的题目 ( 一 ) 真题在澳大利亚考驾驶执照, 有关交通法规的书上的第一条是交 通部长给初学驾驶的人的忠告: "学习交通规则的本质是懂得和别人 分享道路.&qu ...

  3. c语言 集中上机题目,C语言集中上机题目.doc

    C语言集中上机题目.doc C语言集中上机题目 第一次实验 循环 1 编程 1.1 打印出以下图案 * * * * * * * * * * * * * * * * * * * * * * * * * ...

  4. 打开c语言运行不了_C语言——菜鸟和大神的分水岭:内存、线程、进程

    作为一门古老的编程语言,C语言已经坚挺了好几十年了,初学者从C语言入门,大学将C语言视为基础课程.不管别人如何抨击,如何唱衰,C语言就是屹立不倒:Java.C#.Python.PHP.Perl 等都有 ...

  5. python实现c语言编译器安卓版_c语言编译器ide下载app-c语言编译器ide软件下载v1.5.1 安卓版-2265安卓网...

    c语言编译器ide软件是一款非常实用的练习代码的服务软件,操作简单,好上手,宛如和电脑操作般,各种你需要的功能在这里都能找到的,如果最新刚好在备考的 小伙伴们,不如现在现在下载体验体验吧! c语言编译 ...

  6. 有输入和输出的c语言大作业题目,C语言大作业题目2011.pdf

    C语言大作业题目2011 忆 恰 疡 留 夯 毒 癌 识 畔 赶 产 嘎 挡 仅 盔 撤 磊 唆 衬 崔 盟 碌 残 馈 勇 渐 抑 瘤 亩 逸 难 目 给 忧 狸 弹 菊 佰 谬 卉 卫 保 扦 攫 ...

  7. 凸轮结构c语言编程,凸轮设计_c语言编程

    凸轮设计_c语言编程 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 一.编程:(注:程序中各个符号的含义)PI:常数 s0:理论廓 ...

  8. c语言 hello world代码_C语言基础

    首先,还是从hello world开始. #include <stdio.h> int main(void) { printf("Hello Worldn"); ret ...

  9. 无效的变量名c语言,变量方法用法 _C语言-w3school教程

    C语言 的 变量 变量是内存位置的名称.它用于存储数据.其值可以更改,可以重复使用多次. 它是通过符号表示内存位置的方法,以便可以容易识别. 我们来看一下声明一个变量的语法: type variabl ...

最新文章

  1. MySQL 关于毫秒的处理
  2. JDBC-Statement 对象
  3. 统计、可视化两不误,多达19种可视化技能你一定要掌握~~
  4. 一顿骚操作!我将 SQL 耗时从 30248.271s 优化到 0.001s
  5. typecho 去掉index.php,typecho如何去掉index.php
  6. openstack租户管理_openstack 租户、用户管理
  7. TensorFlow学习笔记(十二)TensorFLow tensorBoard 总结
  8. @ResponseBody//该注解会将返回值转为json格式并放到响应体中返回到前台
  9. 基本操作:Go创建GraphQL API
  10. JS组件系列——Bootstrap Select2组件使用小结
  11. 安卓应用安全指南 4.1.1 创建/使用活动 示例代码
  12. 转载:28个Unix/Linux的命令行神器
  13. MySQL多库备份以及从多库备份中恢复某个库
  14. MATLAB小技巧(28)模糊综合评价
  15. final 的三种用法是什么?
  16. 小学计算机键盘指法课件,小学信息技术键盘指法练习.ppt
  17. 大哥都是从小弟做起的
  18. [裴礼文数学分析中的典型问题与方法习题参考解答]4.3.21
  19. 算法:扑克牌顺序问题
  20. 宿舍管理系统,宿舍管理、学生管理、楼宇管理、宿管管理分别有哪些内容

热门文章

  1. 参加全国大学生电子设计竞赛有感
  2. layui layer诡异bug记录
  3. Final Cut Pro资源库占用内存太大如何释放磁盘空间?
  4. 爬取京东商城中的书籍信息
  5. 字号——磅——mm 对应表
  6. Linux中cat、more、less、head、tail的区别
  7. TensorFlow RNN MNIST字符识别Demo快速了解TF RNN核心框架
  8. ARM与DSP的区别
  9. 用Win10自带SSH实现免密登录Linux
  10. QCustomPlot 连续快速地调用replot()改善速度