慢羊羊的空间

无为,无我,无欲,居下,清虚,自然

C 语言天罡三十六题 - 精英九题(2021-5-29) 金牌收录

该系列共分四篇:

相关说明请参考基础九题

精英九题

19. 天空星

任务:模拟 Windows XP 的屏保“变幻线”。

不了解 WinXP 屏保“变幻线”效果的同学,可以[点击这里下载屏保“变幻线”]。下载后解压,直接运行 ssmyst.scr 即可看到效果。

20. 天速星

任务:一堆反弹的小球(数量可增减)。

屏幕上随机出现 10 个颜色各异的小球,沿 45 度运动,碰到边界反弹。按键盘的 + 号,屏幕上增加一个随机运动且颜色随机的小球。按 - 号,屏幕上减少一个小球。

每增加一个小球,就为这个小球分配所需的存储空间;每减少一个小球,就释放对应的存储空间。

小球数量的下限为 0,上限不限(数量太多时运行会变慢)。

21. 天异星

任务:可视化排序。

生成 20 个高度随机、颜色随机的立柱,将其横向一排显示出来。

然后,将其按照从小到大的顺序后,显示出来。

再然后,实现可视化的排序过程,就是说,排序的每一个步骤,谁和谁比较,谁和谁交换,用动画显示出来,展示完整的排序过程。

22. 天杀星

任务:汉诺塔求解。

汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度的古老传说:在印度北部的贝拿勒斯圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针从下到上地穿好了由大到小的 64 片金片。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

例如,4 层汉诺塔的求解步骤如下:

请写一个程序,动态演示 8 层汉诺塔的求解过程。

23. 天微星

任务:雪花。

画出下面这样的雪花图案:

这是分形学的一个经典图案:科赫雪花(Koch snowflake)。希望下面这个动画能给你一点启发:

24. 天究星

任务:读写 BMP 文件。

任意找一张 BMP 图片文件。然后,用文件读取的方式打开这个 .bmp 图片文件,一个字节一个字节的读取其内容,并将图片逐像素的画出来。

例如,第 0 个字节是'B',第 1 个字节是'M',第 2~5 个字节是文件大小……

注:

1. 关于 BMP 图片的文件格式,请自行搜索。

2. 为了简化程序,可以只考虑 24 位色、未压缩的 BMP 图片。

25. 天退星

任务:求解八皇后问题。

八皇后问题(Eight queens),由国际西洋棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放 8 个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

请写一个程序,动态演示八皇后问题的求解过程。

26. 天寿星

任务:迷宫求解。

该任务包括两点要求:

(1) 创建一个随机的迷宫,要求该迷宫有且仅有一条从起点通往终点的路线,同时,任何位置都不存在环路。

(2) 自动求解从起点通往终点的路线。

27. 天剑星

任务:文本文件渲染器。

第一步要求:显示英文文本文件。
在磁盘上保存一个文本文件,内容为若干行的英文。用程序读取这个文档,并将其中的英文内容显示到屏幕上。
如果内容较长,无需考虑滚动条功能。

第二步要求:文本文件支持中文。
请自行了解 ANSI 编码、Unicode 编码(也叫 Utf-16,分大小端)、Utf-8 编码等常见编码格式,使你的程序能正确的读取不同编码的中文文本文件,并正确在屏幕上显示中文。

第三步要求:富文本格式支持。
前面两步的文本文件并没有实现丰富的格式,这一步,要加上格式描述,使文档可以显示丰富的格式。
例如:文本文件中的 abc<b>def</b>g,表示 def 为粗体,<h1>xxx</h1> 表示 1 号标题、<i>xxx</i> 表示斜体,<< 表示 <,>> 表示 > 等。

你也可以 \bxxx/b 表示粗体,还可以用【asd】表示粗体。格式描述自己定义,只要你的程序能按照你定义的格式正确显示即可。

注意:
1. 格式定义要完整、没有歧义。例如,如果用 <b>xxx</b> 表示粗体,那么,如何表示 < 这个符号呢?当文档中含有 a<b 这样的内容,如何确保正确解析并显示?要在设计阶段就考虑清楚。
2. 格式定义要允许嵌套。例如:<b>xxx<i>xxx</i>xxx</b> 表示粗体里面若干内容在粗体的基础上增加了斜体样式。

3. 如果文档比较长,暂时可以不考虑滚动条的实现。

封神九题

https://codebus.cn/yangw/36-tasks-g4

添加评论