更新记录
2026-11-01(第四次)· 全部 35 章重写,改成「讲完就练」
这一版把 10 个课程页面全部重写了,之前那种「一章一大段讲解 + 末尾堆一张题单」的结构彻底废弃。
结构变了
之前的问题是:学生读完三页讲解,看到末尾一张 30 题的表格,不知道哪道题对应哪段知识,只能从头往后硬做。
现在每一章拆成若干小节,每小节讲一个知识点,紧跟一个蓝色「动手」框,框里正好是能练习这个知识点的题。读完就做,做完再往下读。
一章结束时有一个绿色「验收」框,写明「学完这章你应该能做到什么」,做不到就回头补,别往前推。
全站 192 个提示框,分四类:
| 类型 | 数量 | 用途 |
|---|---|---|
| 动手(蓝) | 126 | 讲完知识点立刻做的题 |
| 验收(绿) | 35 | 一章结束时自检 |
| 陷阱(红) | 25 | 实际会踩的坑,附具体错误现象 |
| 补充(灰) | 6 | 背景说明,不影响主线 |
全站改用 scanf / printf
之前用 cin/cout,现在统一改成 scanf/printf 并说明了三个理由(速度快、格式控制精确、输出量大时差距明显)。
顺带把三个初学者一定会踩的坑写进了正文:
scanf漏写&(运行时崩溃,不报编译错)- 格式串里写
\n导致程序卡住等输入 double读用%lf、写用%f(不对称)
讲解密度做了梯度
前两章(输出、算术)拆得最细——#include 为什么这么写、printf 的占位符怎么数、7/2 为什么不是 3.5,全都展开。判断和循环开始收敛到「要点 + 坑」,数组之后基本只说关键处。
这是刻意的:零基础阶段怕的不是难,是「看着懂了其实没懂」。后面章节留给学生自己推,前提是前面真的练熟了。
校验
254 道题全部挂回讲义,用脚本校验:全覆盖、无重复、无错页。题目链接从 OJ 的作业结构自动生成,不是手抄的。
2026-11-01(第三次)
接上 OI-Wiki
服务器上本来就有一套 OI-Wiki(621 页),之前跟讲义是两张皮。现在接起来了:
- 每章末尾加了延伸阅读,直接链到 wiki 的对应页
- 每条链接都标了阅读时机:「可以先看」/「学完本章再看」/「现在跳过」
- 新增 查 OI-Wiki 的正确姿势,讲清楚哪些该看、哪些是竞赛内容
为什么要标时机:OI-Wiki 是给竞赛选手写的参考手册,默认读者会写程序。直接甩链接过去,学生点开看到红黑树和莫比乌斯反演,只会认为自己笨。标上「现在跳过」,他们才知道那不是自己的问题。
视觉层对齐 hydro-ui
字体、色板、字号阶梯全部改成 hydro-ui 那一套(/home/lighthouse/hydro-ui/设计系统.md):
| 层面 | 取值 |
|---|---|
| 西文 | Fira Sans(自托管) |
| 中文正文 | HarmonyOS Sans SC(164 个 unicode-range 分片,带 size-adjust: 104% 字面率补偿) |
| 标题 | 汉仪文黑 85W(4 片) |
| 代码 | JetBrains Mono |
| 根字号 | 20px(等效 CTRL++ 125%) |
| 正文行宽 | 42em = 840px |
| 正文色 | #1d1d1f |
| 品牌色 | #0071e3,hover #0077ed |
| 页面底色 | #fbfbfd |
| 标题字重 | 400(层级靠字号拉开,不靠加粗) |
字体文件不复制,Caddy 里用 handle 把 /fonts* 路由到 hydro-ui/public——那边换字体,这边自动跟着变。
前端修掉的问题
html { font-size: 62.5% }让根字号变成 10px,所有 rem 全部偏小;<html>上也没有class="book",得挂:root- fontsettings 插件的
.book.font-size-2 ... section { font-size: 1.6rem }特异性 (0,4,1),把正文顶到 32px——四档字号全部重映射 intopic-toc把.page-inner压到 60%、目录占 20%,正文只剩 660px——改成「正文自适应 + 目录固定 190px」- 翻页箭头
.navigation是.book-body的直接子元素(不在.page-wrapper里),90px 宽压住正文左边 77px——去掉 - 窄屏下
.page-inner作为 flex item 被宽代码块撑到 589px(视口 390),min-width: 0也拦不住——退回 block 布局 - 表格的斑马纹是
tr:nth-child(2n)带来的,取色器写tr覆盖不掉 - 页内目录把提示框的
h3.panel-title也收了进去——selector 改用子选择器.markdown-section > h2, > h3
2026-11-01(第二次)
改造成《cpp基础语法》配套讲义
原来是一份通用的平台使用文档,现在改成 OJ 作业《cpp基础语法》的配套讲义。
- 章节结构与 OJ 作业完全对齐:8 大板块、35 章
- 每章末尾挂上该章的题目清单,254 道题全部带链接,直接点进 OJ
- 题目清单由
gen_course.py从 OJ 的作业结构(hw.json)+ 题目名(titles.json)自动生成,不手抄
写作思路
前期详细、后期放手。
- 第 1–7 章(基础、计算):每个符号都解释,每行代码都说清楚为什么。零基础阶段最怕"看起来懂了其实没懂"。
- 第 8 章以后:只讲要点和坑,剩下留给自己推。
- 每章都有"容易错的地方",用提示框标出来,这些是高频失分点。
结构
| 分节 | 内容 |
|---|---|
| 开始 | 前言、怎么用这份讲义、注册与提交 |
| 课程 | 10 个页面,覆盖 35 章 |
| 参考 | 本地调试、FAQ、出题、写作语法 |
前端
沿用 NJU ICS-PA 的插件组合:
| 插件 | 作用 |
|---|---|
theme-comscore |
整体配色 |
intopic-toc |
侧栏页内导航(nested 模式) |
localized-footer |
页脚本地化 |
page-footer-ex |
页脚版权与修订时间 |
callouts |
提示框,隐藏类型名只留图标 |
katex |
数学公式 |
踩过的坑
callouts不是 hints 插件那一套写法,是带 h4 的引用块katex的行内公式要用两对美元符号,一对不渲染katex按$$做全文替换,不认代码块——代码块里示范公式写法会被渲染成乱码- 正文里出现模板标签(大括号加百分号)会被当语法解析,直接构建失败
intopic-toc的mode只有flat/nested,写onpage会被静默忽略- 任务列表
- [ ]和[TOC]都不支持
待办
- [ ] 补每章的"常见错解"示例(把学生的真实错误代码放进去)
- [ ] 给进阶章节加二维码,扫了直接跳到对应题目
- [ ] 比赛规则与判罚标准