## 介绍 Introduce C语言必知必会系列教程。 C 语言详细教学。 欢迎关注我的公众号:【不会编程的程序圆】,看更多干货。


## 声明 License 本仓库内容除了少部分引用书籍和技术文档的部分内容(均在文中末尾指出),其余都是我的原创。在您引用本仓库内容或者对内容进行修改演绎时,请署名并以相同方式共享,谢谢。 转载文章请在开头明显处标明该页面地址。公众号等其它盈利性质的转载请联系 2823666460@qq.com。
## 导航 Navigation 1. C 语言基础 2. 读书笔记 3. 代码练习 4. C 语言小游戏 5. C 语言课程设计作业 6. 免费获取 C 语言必读经典电子书
## 目录 Catalogue
### C 语言基础 *** #### 一 认识 C 语言 - C 语言概述 #### 二 基本概念 - 基本概念(上) - 基本概念(下) #### 三 格式化输入输出 - 格式化输入/输出 #### 四 数据类型 - 数据类型 #### 五 运算符 - [运算符](http://mp.weixin.qq.com/s?__biz=MzAxMDQwMzU4Mg==&mid=2247484055&idx=2&sn=5601148e1ea9ccffc8781b1fa00f31d1&chksm=9b51a906ac2620100bfa39e5e1154f0faf1a0736649b49e8285ee20899302587d8cd88cb7ea4&scene=21#wechat_redirect) #### 六 选择语句 #### 七 循环 #### 八 数组 - [反思数组](https://mp.weixin.qq.com/s/Pny_UjBD-4qBCnNAy13OFQ) #### 九 函数 - [反思函数](https://mp.weixin.qq.com/s/JEalmGOwNXp9IM0W7B7YJw) #### 十 程序结构 - [初探程序结构](https://mp.weixin.qq.com/s/YLNJsWLhDyO7wxTqg-wShw) #### 十一 指针 - [基础](https://mp.weixin.qq.com/s/x3un4tnaHSISUfP8n3V_6g) - [运算](https://mp.weixin.qq.com/s/q0b1ib15FXeEr8hjUhU9ew) - [const](https://mp.weixin.qq.com/s/Fc-sAgpXmJ1eVKufZCvN8A) - 指针进阶 #### 十二 字符串 - [基础](https://mp.weixin.qq.com/s/FSQm1GroRFfnQDSCiKf5dg) - [常用字符串函数详解](https://mp.weixin.qq.com/s/CrInWDeD5k_XNvPzcgI06Q) - 字符串函数与内存函数 #### 十三 预处理器 #### 十四 编写大型程序 #### 十五 结构 联合 枚举 - [初探](http://mp.weixin.qq.com/s?__biz=MzAxMDQwMzU4Mg==&mid=2247483829&idx=1&sn=1e1420548b80bdd3d70ba1078fb29b70&chksm=9b51aa24ac262332a074bf0018e8ef4e2b4a7d732a57828714d0fcbddc9cb5fb2823427bc58b&scene=21#wechat_redirect) - 内存对齐 #### 十六 指针的高级应用 - 初识 malloc - 动态内存管理 #### 十七 声明 #### 十八 程序设计 #### 十九 底层程序设计 #### 二十 文件 - [初识文件](http://mp.weixin.qq.com/s?__biz=MzAxMDQwMzU4Mg==&mid=2247484055&idx=3&sn=79d7d042b7e94221d38b6fc326d59d32&chksm=9b51a906ac2620100030cf57648bb4810eba0f5d180ba4f59349edcff4d9d673ad53dd2d5da5&scene=21#wechat_redirect) #### 二十一 错误处理 #### 补充 - 数据存储 - 素数的判断

### 代码练习 ***
| 练习 | 介绍 | 难度 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------- | | **1**.[常见字符串/内存函数实现](./Coding/Practice/string) | 主要实现:`strlen/strcpy/strcmp/strcat/strstr/memcpy/memmove` | :star::star::star: | | **2**.[账簿计算](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/06%20%E5%BE%AA%E7%8E%AF/01%20%E8%B4%A6%E7%B0%BF%E8%AE%A1%E7%AE%97) | 练习循环的使用(`while, switch`) | :star: | | **3**.[计算利息 && 发牌](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/08%20%E6%95%B0%E7%BB%84) | 练习数组的使用 | :star: | | **4**.[判定素数](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/09%20%E5%87%BD%E6%95%B0/01%20%E5%88%A4%E5%AE%9A%E7%B4%A0%E6%95%B0) | 练习函数的使用 | :star: | | **5**.[猜数 && 手牌分类](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/10%20%E7%A8%8B%E5%BA%8F%E7%BB%93%E6%9E%84) | 练习全局变量的使用(拓展:如何取代全局变量) | :star:(猜数) ​ :star::star::star:(手牌分类) | | **6**.[数组的最大元素和最小元素](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/11%20%E6%8C%87%E9%92%88/01%20%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0%E5%92%8C%E6%9C%80%E5%B0%8F%E5%85%83%E7%B4%A0) | 了解指针 | :star: | | **7**.[设计字符串读取函数](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/13%20%E5%AD%97%E7%AC%A6%E4%B8%B2/01%20%E8%AE%BE%E8%AE%A1%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%AF%BB%E5%8F%96%E5%87%BD%E6%95%B0) | 了解字符串的读取函数 `getchar`,字符串的特性(`\0` 结尾),`EOF` 的含义 | :star: | | **8**.[显示一个月的提醒](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/13%20%E5%AD%97%E7%AC%A6%E4%B8%B2/02%20%E6%98%BE%E7%A4%BA%E4%B8%80%E4%B8%AA%E6%9C%88%E7%9A%84%E6%8F%90%E9%86%92%E5%88%97%E8%A1%A8) | 了解字符串函数 `strcpy/strcat/strcmp` 的使用,并结合数组(二维)的知识 | :star::star: | | **10**.[核对行星名字](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/13%20%E5%AD%97%E7%AC%A6%E4%B8%B2/03%20%E6%A0%B8%E5%AF%B9%E8%A1%8C%E6%98%9F%E5%90%8D%E5%AD%97) | 了解(字符串)指针数组,`main` 函数的参数的含义 | :star::star: | | **11**.[文本格式化](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/15%20%E7%BC%96%E5%86%99%E5%A4%A7%E5%9E%8B%E7%A8%8B%E5%BA%8F/01%20%E6%96%87%E6%9C%AC%E6%A0%BC%E5%BC%8F%E5%8C%96) | 编写第一个多文件程序 | :star::star::star: | | **12**.[维护零件数据库](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/16%20%E7%BB%93%E6%9E%84%26%E8%81%94%E5%90%88%26%E6%9E%9A%E4%B8%BE/01%20%E7%BB%B4%E6%8A%A4%E9%9B%B6%E4%BB%B6%E6%95%B0%E6%8D%AE%E5%BA%93) | 了解结构体及其使用 | ⭐️⭐️⭐️ | | **13**.[显示一个月的提醒 pro](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/17%20%E6%8C%87%E9%92%88%E7%9A%84%E9%AB%98%E7%BA%A7%E5%BA%94%E7%94%A8/01%20%E6%98%BE%E7%A4%BA%E4%B8%80%E4%B8%AA%E6%9C%88%E7%9A%84%E6%8F%90%E9%86%92%E5%88%97%E8%A1%A8) | 了解动态内存分配函数 `malloc` | :star::star: | | **14**.[维护零件数据库 pro](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/17%20%E6%8C%87%E9%92%88%E7%9A%84%E9%AB%98%E7%BA%A7%E5%BA%94%E7%94%A8/02%20%E7%BB%B4%E6%8A%A4%E9%9B%B6%E4%BB%B6%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%88%E9%93%BE%E8%A1%A8%EF%BC%89) | 了解链表这种数据结构 | ⭐️⭐️⭐️ | | **15**.[栈实现](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/19%20%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/01%20%E6%A0%88%E7%9A%84%E5%AE%9E%E7%8E%B0/01%20%E6%A0%88%E6%A8%A1%E5%9D%97) | 数组实现和链表实现 | :star::star: | | **16**.[栈抽象数据类型](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/19%20%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/01%20%E6%A0%88%E7%9A%84%E5%AE%9E%E7%8E%B0/02%20%E6%A0%88%E6%8A%BD%E8%B1%A1%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B) | 了解抽象数据类型(ADT) | ⭐️⭐️⭐️ | | **17**.[XOR 加密 && 查看内存单元](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/20%20%E5%BA%95%E5%B1%82%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1) | 了解底层程序设计(位运算等) | :star::star: | | **18**.[输入输出](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/22%20%E8%BE%93%E5%85%A5%26%E8%BE%93%E5%87%BA) | 了解 C 语言输入输出,文件操作(`fopen/fclose`,`fread/fwrite`等) | :star::star: | | **19**.[错误处理](https://github.com/hairrrrr/C-CrashCourse/tree/master/Coding/C_Crash_Course/01%20Examples/24%20%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86) | 简单了解 `signal`,`setjump/longjump` 等函数的含义 | :star::star: | | | | | | | | | | | | |

### 读书笔记 ***
#### C 陷阱与缺陷 - 一 词法陷阱 - 二 语法陷阱 - 三 语义陷阱 - 四 连接 - 五 库函数 - 六 预处理器 - 七 可移植缺陷

### C 语言小游戏 *** - 猜数

### C 语言课程设计作业 ***
- 通讯录(基于文件) - 信息管理系统(基于文件)

## 关于我 About Me

我的社交平台

知乎 / CSDN / 简书

微信公众号:不会编程的程序圆

## 参考资料 以下排名不分先后,感谢这些优秀的作者,老师和网站。 - 浙大·翁恺 mooc - 《C 语言程序设计——现代方法》 - 《C Primer Plus》 - 《C 陷阱与缺陷》 - 《C 专家编程》 - www.cppreference.com - www.cplusplus.com ## 免费获取 C 语言必读经典电子书
如果侵权,请联系我的邮箱 shepardwang2020@outlook.com,我会第一时间删除 下面的书已经收集,并且本仓库还在持续增加电子书。如果对你有帮助,请点一个 star ~ ,让更多的人获得帮助。 - 《C 语言程序设计——现代方法》 - 《C Primer Plus》 - 《C primer Plus 第五版课后习题答案》 - 《C 陷阱与缺陷》 - 《C 专家编程》 - 《C 和 指针》 - 《C 程序设计》(谭浩强) 获取方式:**关注微信公众号【不会编程的程序圆】** ,后台回复 **【cbook】** ,即可获得下载链接