240 lines
5.5 KiB
Markdown
240 lines
5.5 KiB
Markdown
# C语言学习代码库
|
||
|
||
## 项目简介
|
||
这是一个完整的C语言学习代码库,包含了从基础语法到高级项目的全面学习内容。代码库涵盖了翁凯老师C语言课程的所有章节练习、课堂代码实践以及完整的项目实战。
|
||
|
||
## 项目结构
|
||
|
||
### 📚 翁凯C语言/
|
||
翁凯老师C语言课程的完整代码实现,按章节组织:
|
||
|
||
- **第1章** - C语言入门
|
||
- Hello World程序
|
||
- 基础数学运算
|
||
- 猜数游戏
|
||
- 数组倒序排列
|
||
|
||
- **第2章** - 循环与判断
|
||
- 硬币兑换问题
|
||
- 阶乘计算(多种实现)
|
||
- 求和算法
|
||
- 最大公约数(辗转相除法)
|
||
- 整数分解
|
||
- 素数判断
|
||
|
||
- **第3章** - 数据类型与运算
|
||
- 字符类型处理
|
||
- 数字朗读程序
|
||
- 九九乘法表
|
||
- 水仙花数
|
||
- 浮点数精度
|
||
- 逻辑运算
|
||
- 分式约分
|
||
|
||
- **第4章** - 函数
|
||
- 函数定义与使用
|
||
- 参数传递机制
|
||
- 递归函数
|
||
- 局部变量作用域
|
||
|
||
- **第5章** - 数组
|
||
- 一维数组操作
|
||
- 二维数组与矩阵
|
||
- 冒泡排序算法
|
||
- 素数筛选
|
||
- 杨辉三角
|
||
- 矩阵运算
|
||
|
||
- **第6章** - 指针
|
||
- 指针基础概念
|
||
- 指针与数组
|
||
- 动态内存分配
|
||
- 函数指针
|
||
- 指针数组
|
||
|
||
- **第7章** - 字符串
|
||
- 字符串基础操作
|
||
- 字符串函数(strlen, strcpy, strcmp)
|
||
- 字符串数组
|
||
- 回文字符串
|
||
|
||
- **第8章** - 结构体
|
||
- 结构体定义与使用
|
||
- 结构体与函数
|
||
- 嵌套结构体
|
||
- 动态链表
|
||
- 枚举类型
|
||
- 联合体
|
||
|
||
- **第9章** - 程序结构
|
||
- 全局变量
|
||
- 静态变量
|
||
- 头文件使用
|
||
- 宏定义
|
||
- 大型程序组织
|
||
|
||
- **第10章** - 文件操作
|
||
- 文件输入输出
|
||
- 格式化读写
|
||
- 二进制文件处理
|
||
|
||
- **第11章** - 位运算
|
||
- 按位运算符
|
||
- 移位运算
|
||
- 位段操作
|
||
|
||
- **第12章** - 动态数据结构
|
||
- 可变数组实现
|
||
- 自动增长机制
|
||
- 数据访问优化
|
||
|
||
- **第13章** - 链表
|
||
- 单向链表实现
|
||
- 链表函数封装
|
||
- 链表搜索算法
|
||
- 链表删除操作
|
||
- 链表清除功能
|
||
|
||
### 🎯 课上代码练习/
|
||
课堂实践代码,包含基础练习和项目实战:
|
||
|
||
#### 基础练习(1.1.1 - 1.1.7)
|
||
- C语言初识
|
||
- 数值处理(最大值、求和)
|
||
- 字符函数应用
|
||
- 大小写转换
|
||
- 条件判断
|
||
- BMI计算器
|
||
|
||
#### 🎮 五子棋项目
|
||
完整的五子棋人机对战系统,技术特点:
|
||
- **AI算法**:α-β剪枝优化的极小极大算法
|
||
- **棋盘支持**:5x5到25x25可调尺寸
|
||
- **智能评估**:完整的棋型评估系统
|
||
- **游戏功能**:复盘系统、胜负判断
|
||
- **用户体验**:清晰的界面显示
|
||
|
||
详细文档请查看:[五子棋项目README](课上代码练习/五子棋/README.md)
|
||
|
||
### 📝 草稿/
|
||
临时代码和实验性代码:
|
||
- 测试代码片段
|
||
- 算法草稿
|
||
- 文档模板
|
||
|
||
## 技术栈
|
||
|
||
- **编程语言**:C语言(C99标准)
|
||
- **编译器**:GCC
|
||
- **开发环境**:支持Windows/Linux/macOS
|
||
- **特殊库**:数学库(-lm)
|
||
|
||
## 编译说明
|
||
|
||
### 单文件编译
|
||
```bash
|
||
gcc filename.c -o output
|
||
```
|
||
|
||
### 需要数学库的程序
|
||
```bash
|
||
gcc filename.c -o output -lm
|
||
```
|
||
|
||
### 多文件项目(如五子棋)
|
||
```bash
|
||
cd 课上代码练习/五子棋
|
||
gcc "五子棋 copy 3.c" -o gomoku -lm
|
||
```
|
||
|
||
## 学习路径建议
|
||
|
||
### 🔰 初学者路径
|
||
1. **基础语法**:从翁凯C语言第1-3章开始
|
||
2. **函数理解**:学习第4章函数概念
|
||
3. **数组掌握**:重点练习第5章数组操作
|
||
4. **指针突破**:深入理解第6章指针概念
|
||
|
||
### 🚀 进阶路径
|
||
1. **字符串处理**:第7章字符串操作
|
||
2. **数据结构**:第8章结构体和第13章链表
|
||
3. **文件操作**:第10章文件处理
|
||
4. **项目实战**:五子棋AI项目
|
||
|
||
### 💡 高级应用
|
||
1. **位运算优化**:第11章位操作
|
||
2. **动态内存**:第12章可变数组
|
||
3. **程序架构**:第9章大型程序设计
|
||
|
||
## 代码特色
|
||
|
||
### ✨ 编码规范
|
||
- 统一的代码风格和注释
|
||
- 清晰的变量命名
|
||
- 完整的错误处理
|
||
|
||
### 🛠️ 实用功能
|
||
- 跨平台兼容性(Windows/Linux)
|
||
- UTF-8编码支持
|
||
- 用户友好的交互界面
|
||
|
||
### 📊 算法实现
|
||
- 经典排序算法
|
||
- 搜索算法
|
||
- 数学计算算法
|
||
- AI决策算法
|
||
|
||
## 项目亮点
|
||
|
||
### 🎯 五子棋AI系统
|
||
- **智能对战**:实现了具有挑战性的AI对手
|
||
- **算法优化**:使用α-β剪枝提升搜索效率
|
||
- **完整功能**:包含复盘、胜负判断等完整游戏体验
|
||
|
||
### 📚 完整学习体系
|
||
- **循序渐进**:从基础到高级的完整学习路径
|
||
- **实战结合**:理论学习与项目实践相结合
|
||
- **代码质量**:注重代码规范和最佳实践
|
||
|
||
## 使用说明
|
||
|
||
1. **克隆仓库**:
|
||
```bash
|
||
git clone https://github.com/LHY0125/Learn_C.git
|
||
cd Learn_C
|
||
```
|
||
|
||
2. **选择学习内容**:
|
||
- 基础学习:进入`翁凯C语言/`对应章节
|
||
- 项目实战:进入`课上代码练习/五子棋/`
|
||
- 快速练习:查看`课上代码练习/`基础练习
|
||
|
||
3. **编译运行**:
|
||
```bash
|
||
gcc 文件名.c -o 输出名
|
||
./输出名
|
||
```
|
||
|
||
## 贡献指南
|
||
|
||
欢迎提交Issue和Pull Request来改进这个学习资源!
|
||
|
||
### 贡献方式
|
||
- 🐛 报告Bug
|
||
- 💡 提出改进建议
|
||
- 📝 完善文档
|
||
- ✨ 添加新的学习案例
|
||
|
||
## 许可证
|
||
|
||
本项目采用MIT许可证,详情请查看LICENSE文件。
|
||
|
||
## 联系方式
|
||
|
||
如有问题或建议,欢迎通过GitHub Issues联系。
|
||
|
||
---
|
||
|
||
**Happy Coding! 🚀**
|
||
|
||
> 这个代码库记录了C语言学习的完整历程,从基础语法到复杂项目,希望能帮助更多人掌握C语言编程技能。 |