# test.c **Repository Path**: dark-dan/test.c ## Basic Information - **Project Name**: test.c - **Description**: 这里是黑暗的丹的练习仓库。 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-09-24 - **Last Updated**: 2026-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: C语言 ## README
# 🚀 黑暗的丹的 C 语言练习仓库 Language C Compiler GCC Build Makefile Blog CSDN *欢迎来到我的代码时光机!* *从基础语法到多文件工程架构,记录一个大一极客的打怪升级之路。* **59 个可运行练习目录 · 4 代扫雷重构 · 6 篇踩坑复盘**
--- ## 🧭 从这里开始 | 想看什么 | 去哪看 | |---|---| | 我现在的代码水平 | [V4.0 扫雷(最新版)](./Projects/Project_04_Minesweeper/README.md) | | 我踩过哪些坑 | 文末「技术博客与笔记」,6 篇复盘 | | 代码怎么跑起来 | 下一节「怎么编译运行」 | | 每天都在练什么 | 「练习目录」,按月折叠 | ## 📦 这个仓库是什么 - **每日练习**:一天一个目录,从语法、数组、函数,一路走到指针、结构体、多文件工程。 - **实战项目**:扫雷做了四代,每一代都在修上一代暴露的架构问题。 - **可复用模板**:一题一个 `.c` 的练习骨架 + 环境速查文档,单独维护在 [c-daily-template](https://gitee.com/dark-dan/c-daily-template)。 - **复盘博客**:写踩坑过程,不写最终答案。 ## 🏗️ 怎么编译运行 每个练习目录都带 `Makefile`,**一题一个 exe**,旧版本不用注释掉、随时可以回头跑: ```powershell cd 2026_10_Oct\test_10_31 make # 编译本目录所有 .c → 同名 .exe make strict # 把告警当错误(提交前跑一次) make list # 看看今天有哪几题 .\p01_fibonacci.exe # 运行 ``` 没装 make 的机器用同目录的 `build-all.ps1`,功能等价: ```powershell .\build-all.ps1 # 编译全部 .\build-all.ps1 p01_fibonacci -Run # 只编这一个并立刻运行 ``` 模板的完整用法、编码约定、常见问题见 [c-daily-template](https://gitee.com/dark-dan/c-daily-template)。 ## 📌 实战项目:四代扫雷 同一款扫雷写了四遍,每一遍都在解决上一遍留下的问题。 | 版本 | 日期 | 这一代重点 | 解决的 / 暴露的问题 | |---|---|---|---| | [V1.0](./Projects/Project_01_Minesweeper/README.md) | 10-17 | 多文件编程、二维数组、递归展开 | 插旗分支漏了边界校验;EOF 时清缓冲区会死循环 | | [V2.0](./Projects/Project_02_Minesweeper_deepseek_harness/README.md) | 10-19 | 输入层重写、显式栈展开、Knuth 洗牌布雷 | 首击可能踩雷 → 加 3×3 安全区 | | [V3.0](./Projects/Project_03_Minesweeper/README.md) | 10-20 | 校验前置、胜利判定重算 | 从 V1 分叉,**没有继承 V2 的成果** | | [V4.0](./Projects/Project_04_Minesweeper/README.md) | 10-29 | `GameState` 结构体、BFS 队列、动态难度 | 递归改迭代、首击安全、Makefile 自动化 | ## 📅 练习目录 ### 命名规则 | 后缀 | 含义 | |---|---| | `_bit` | 比特课堂作业 | | `_xj` | 希冀平台(在线判题)作业 | | `_cs` | 配置 / 工具链试验,不是编程练习 | | `_B07` ~ `_B12` | 「C 语言巩固练习 20 题」B 组的第 7~12 题(deepseek harness 生成) | | `_(1)` `_(2)` | 同一天的两批作业 | ### 九月:语法入门
📂 2026_09_Sept(11 个目录,点击展开) - `test_09_22` — 初识 C 语言,hello C! - `test_09_23` — 按课本发散,计算圆的周长与面积 - `test_09_24` — 算术运算与格式化输入输出(三个数的和与平均值) - `test_09_25` — 数据类型进阶、逻辑运算符、宏定义(预处理器) - `test_09_25_cs` — 用 TortoiseGit(小乌龟)走一遍 SSH 上传流程 - `test_09_26` — 变量作用域、自增自减、复合赋值、格式化输出进阶 - `test_09_26_cs` — 验证 `.gitignore` 忽略规则是否生效 - `test_09_27` — `printf` 与 `scanf` 的用法 - `test_09_28` — 变量初始化、防御性编程与输入校验、宏和三元运算符 - `test_09_29` — 字符常量与进制转换的底层等价性验证 - `test_09_30` — 牛客网 + 比特课堂作业记录
### 十月:控制流 → 数组 → 函数 → 指针
📂 2026_10_Oct(43 个目录,点击展开) - `test_10_01` — deepseek harness 生成的 C 语言基础巩固练习 20 题(A 组) - `test_10_01_cs` — 试怎么离开「文件夹视图」 - `test_10_01_B07` — 巩固练习 B07:ASCII 码与 `%c` 输出 - `test_10_01_B08` — 巩固练习 B08:`printf` 宽度修饰与四则运算表格 - `test_10_02` — `if` 语句、关系操作符、条件操作符、逻辑操作符 - `test_10_02_B09` — 巩固练习 B09:字符常量的八进制 / 十六进制 / 二进制写法 - `test_10_02_bc` — 补充:三目操作符的嵌套 - `test_10_03_(1)` — `&&`(逻辑与)与 `||`(逻辑或)的短路运算 - `test_10_03_(2)` — `switch` 语句,超纲部分用位运算控制开关 - `test_10_04` — `while` 循环的使用(今天出去玩了,水一下) - `test_10_05` — `for` 循环与 `do-while`,超纲部分用 `pow` 函数 - `test_10_05_B10` — 巩固练习 B10:函数参数的求值顺序与序列点 - `test_10_06` — 循环嵌套:100~200 内的素数(跳过偶数、√n、6k±1 三级优化) - `test_10_06_B11` — 巩固练习 B11:三目运算符求较大值 - `test_10_06_B12` — 巩固练习 B12:宏的括号陷阱(`PROD` vs `BAD_PROD`) - `test_10_07_(1)` — 牛客网答题收获 - `test_10_07_(2)` — 恶搞关机程序 + 猜数字游戏(完美版) - `test_10_08_(1)` — 二维数组生成房间、人物移动控制与防越界 - `test_10_08_(2)` — 把猜数字游戏改编成猜拳游戏 - `test_10_09` — 随机数生成噪点,元胞自动机演化洞穴 - `test_10_09_bit`、`test_10_11_bit`、`test_10_14_bit`、`test_10_25_bit` — 比特课堂作业(4 天,题目见各自目录里的注释) - `test_10_10_bit` — 比特课堂作业:9 道题复习(回文数、素数、最大公约数等) - `test_10_12` — 斐波那契数列(变量法 vs 数组法) - `test_10_13_xj` — 希冀:≤5 位正整数,求位数、逐位打印、逆序打印 - `test_10_14_cs` — 验证 UTF-8 配置文件是否成功生效 - `test_10_15` — `return` 语句、数组作函数参数、嵌套调用 - `test_10_15_cs` — 验证新建文件是否自带模板(UTF-8) - `test_10_16_(1)` — n 个数求最大公约数 + 冒泡排序 - `test_10_16_(2)` — 多文件工程:函数的声明与定义、`static` 与 `extern` 的应用 - `test_10_16_bit` — 比特课堂作业:两个数组的交换(第二遍) - `test_10_16_xj` — 希冀:数字反转(`long long` 与负数处理) - `test_10_17_bit` — 比特课堂作业:闰年函数、数组初始化 / 逆置 / 二分查找 - `test_10_18` — 递归与迭代 - `test_10_21` — 逗号表达式、原码 / 反码 / 补码辨析、位运算符 `& | ^ ~`、移位操作符、 异或交换两个整数、统计二进制中 1 的个数(汉明重量) - `test_10_22` — 随机碰撞法 vs Knuth 洗牌法 vs Naive 换牌法(性能实测) - `test_10_23_cs` — 多文件架构 + Makefile 自动化构建,解决 `extern` 多重定义与链接报错 - `test_10_26_bit` — 比特课堂作业:递归四题(斐波那契、幂、数位和、数位打印) - `test_10_28` — 模拟实现 `strlen` 函数(指针),初识结构体 - `test_10_29` — 冒泡排序(指针版)(正在重构 `Project_03_Minesweeper`,水一下) - `test_10_31` — 斐波那契(指针版)(休息一天),顺手启用了新模板:一题一文件 + Makefile
### 十一月:排序 · 查找 · 字符串
📂 2026_11_Nov(5 个目录,点击展开) - `test_11_01` — 快速排序(三数取中 + 小区间插入排序):深度学习快排,了解 `qsort` 函数历史与安全隐患 - `test_11_01_bit` — 比特课堂作业:落单的数(暴力 / 异或 / 排序三解)+ 测速程序实测复杂度;另含位运算打印奇偶位、`Print` 实现、大小端判断、异或交换 - `test_11_02_bit` — 比特课堂作业:冒泡排序、杨辉三角(二维 / 一维滚动两版)、逻辑推理枚举、杨氏矩阵 `O(m+n)` 查找、字符串旋转判定 - `test_11_03` — 初识数组指针与指针数组 - `test_11_04_bit` — 比特课堂作业:模拟实现二维数组 - `test_11_07_bit` — 比特课堂作业:探索转移表,再谈 `qsort` 函数
## 💻 开发环境 | 项目 | 说明 | |---|---| | 编辑器 | Visual Studio 2026 | | 编译器 | GCC 15(w64devkit)/ MSVC | | 构建 | `Makefile` 或 `build-all.ps1`,一题一个 exe | | 版本控制 | Git & TortoiseGit(小乌龟) | | 托管平台 | Gitee | | 练习平台 | 希冀平台、牛客网、比特课堂 | | 编码约定 | UTF-8 带 BOM + CRLF + Tab 缩进,见仓库根的 `.editorconfig` 与 `.gitattributes` | ## 🤖 学习伙伴 - AI 编程助手:DeepSeek / Copilot / OpenCode - 辅助内容:底层概念讲解(如补码、位运算)、代码纠错、防御性编程建议、题目解答 - 寄语:AI 是很好的「结对编程」伙伴和排错向导,但真正跨越每一个坑、敲下每一行代码的,依然是不断前行的自己。 ## 📝 技术博客与笔记 > 记录学习过程中的踩坑复盘,方便日后查阅。 - [C 语言进阶:sizeof 引发的惨案(补码的隐式陷阱)](https://blog.csdn.net/dark_dan/article/details/167085570) - [从零到猜数字游戏:C 语言分支与循环实战心得](https://blog.csdn.net/dark_dan/article/details/167568727) - [C 语言算法启蒙:斐波那契数列背后的「递归陷阱」与「迭代魔法」](https://blog.csdn.net/dark_dan/article/details/168341257) - [从「一碰就碎」到「铜墙铁壁」:大一新生的 C 语言扫雷实战复盘](https://blog.csdn.net/dark_dan/article/details/168548391) - [扫雷开发番外篇:随机碰撞 vs Knuth 洗牌 vs Naive 换牌,性能实测与底层剖析](https://blog.csdn.net/dark_dan/article/details/168774326) - [两条分支,四代扫雷:Project_01 → Project_04 的演进](https://blog.csdn.net/dark_dan/article/details/169562942) ## 🌱 学习寄语 每天进步一点点,努力成为更好的自己!如果有任何代码问题,欢迎交流指正。 ## 💡 开源协议 本项目采用 MIT 协议。