本文档提供系统化的 C/C++ 语言学习路径,帮助不同阶段的学习者规划学习计划。
零基础 → C 语言基础 → C 语言进阶 → 项目实践 → C++ 入门 → C++ 进阶
(0) (1-2月) (1-2月) (持续) (1-2月) (1-2月)
- 无需编程基础
- 了解计算机基本操作
- 掌握 C 语言基本语法
- 能够编写简单的控制台程序
- 理解程序的执行流程
学习内容:
- 阅读
tutorials/c-basics/1. C语言概览.txt - 安装开发环境(Visual Studio 或 Code::Blocks)
- 编写第一个 Hello World 程序
练习目标:
- 成功编译运行第一个程序
- 理解 main 函数的作用
- 熟悉 printf 和 scanf
学习内容:
- 学习
tutorials/c-basics/2. 操作符.txt - 掌握数据类型和变量
- 理解运算符优先级
练习目标:
- 编写简单的计算器程序
- 实现温度转换
- 练习类型转换
学习内容:
- 学习
tutorials/c-basics/3. 分支和循环.txt - 掌握 if-else, switch
- 掌握 for, while, do-while
练习目标:
- 编写九九乘法表
- 实现菜单选择程序
- 编写猜数字游戏
里程碑项目:简单的控制台菜单系统
学习内容:
- 学习
tutorials/c-basics/4. 函数.txt - 学习
tutorials/c-basics/5. 数组.txt - 理解函数参数传递
- 掌握一维数组操作
练习目标:
- 编写常用工具函数(求和、求最大值)
- 实现数组排序
- 字符串基本操作
里程碑项目:学生成绩管理系统(数组版)
- 完成零基础入门路径
- 能够独立编写包含函数和数组的程序
- 掌握指针和动态内存
- 理解结构体和文件操作
- 能够进行调试
学习内容:
- 精读
tutorials/c-basics/6. 初识指针.txt - 理解指针的本质
- 掌握指针与数组的关系
- 学习指针作为函数参数
练习目标:
- 使用指针交换两个变量
- 用指针实现字符串函数(strcpy, strcmp)
- 理解二维数组的指针表示
重点难点:
- 指针的声明和解引用
- 指针运算
- 多级指针
配套代码:
- 查看
course-code/archive-original/2024_11_*_course_*/中的指针示例
学习内容:
- 学习
tutorials/c-basics/7. 初识结构体.txt - 掌握结构体定义和使用
- 学习文件操作(fopen, fread, fwrite)
练习目标:
- 定义学生/图书结构体
- 实现结构体数组排序
- 将数据保存到文件
- 从文件读取数据
配套代码:
- 查看
course-code/archive-original/2024_12_*_course_12/文件操作示例
学习内容:
- 链表的概念和实现
- 学习
course-code/archive-original/2024_12_18_course_12/中的链表代码
练习目标:
- 实现单链表的创建
- 实现链表的插入和删除
- 实现链表的反转
里程碑项目:
- 完整的学生信息管理系统(链表 + 文件存储)
- 通讯录程序
位置:tutorials/projects/tic-tac-toe/
技能要求:
- 数组(棋盘表示)
- 函数(模块化)
- 控制流(游戏逻辑)
学习收获:
- 理解模块化设计
- 学习头文件分离
- 掌握二维数组应用
预计时间:1-2 周
位置:tutorials/projects/minesweeper/
技能要求:
- 二维数组
- 递归算法
- 随机数生成
学习收获:
- 递归的实际应用
- 复杂数据结构
- 游戏逻辑设计
预计时间:2-3 周
技能要求:
- 结构体
- 链表/数组
- 文件操作
- 菜单系统
功能需求:
- 添加/删除/修改学生信息
- 按不同条件查询
- 数据持久化(文件存储)
- 统计功能(平均分、排名)
预计时间:2-4 周
技能要求:
- 字符串处理
- 文件操作
- 指针操作
功能需求:
- 打开/保存文件
- 查找/替换
- 行编号显示
预计时间:3-4 周
- 完成 C 语言基础和进阶学习
- 熟练使用指针和结构体
- 理解面向对象编程思想
- 掌握类和对象
- 了解 C++ 标准库
学习内容:
- 阅读
cpp-materials/reference/C++速成.md - C++ vs C 的区别
- 命名空间、引用、函数重载
练习目标:
- 改写 C 程序为 C++ 风格
- 使用 cin/cout 替代 printf/scanf
- 理解引用与指针的区别
学习内容:
- 类和对象的定义
- 构造函数和析构函数
- 访问控制(public, private, protected)
- this 指针
练习目标:
- 设计 Student 类
- 实现 Book 类
- 编写 BankAccount 类
配套资料:
- 查看
cpp-materials/slides/中的课件
学习内容:
- 继承的概念和语法
- 虚函数和多态
- 抽象类
练习目标:
- 设计 Shape 基类和派生类
- 实现员工管理系统(不同类型员工)
学习内容:
- vector 的使用
- list 的使用
- map 的使用
- 迭代器基础
练习目标:
- 用 vector 重写数组程序
- 用 map 实现词频统计
- 用 list 实现简单队列
里程碑项目:
- 学生管理系统 (C++ 版本,使用类和 STL)
学习内容:
- 运算符重载语法
- 友元函数
- 输入输出运算符重载
练习目标:
- 实现 Complex 类(复数)
- 实现 Vector 类(向量运算)
学习内容:
- 函数模板
- 类模板
练习目标:
- 实现通用排序函数
- 实现 Stack 类模板
- 实现 Array 类模板
项目选择:
- 图书管理系统(完整版)
- 通讯录程序(支持导入导出)
- 简单的游戏引擎框架
Day 1-3: 系统复习
- 复习
tutorials/c-basics/1-4 - 整理知识点笔记
- 标记不懂的地方
Day 4-6: 刷题
- 完成
exams/c-language/midterm/所有试题 - 对照答案,理解每道题
- 总结错题
Day 7-8: 重点攻克
- 针对薄弱环节重点练习
- 复习运算符优先级
- 练习循环和函数
Day 9-10: 模拟考试
- 限时完成一套完整试卷
- 对照答案评分
- 最后查漏补缺
第一周: 系统复习
- Day 1-2: 基础语法和控制流
- Day 3-4: 函数和数组
- Day 5-7: 指针专项复习
第二周: 专项突破
- Day 8-9: 指针与数组关系
- Day 10: 结构体
- Day 11: 文件操作
- Day 12-13: 综合应用
第三周: 刷题与模拟
- Day 14-17: 完成
exams/c-language/final/所有试题 - Day 18-19: 模拟考试
- Day 20: 最后复习
-
主动学习
- 不要只看代码,要自己写
- 理解为什么这样写
- 尝试不同的实现方式
-
循序渐进
- 不要跳过基础直接学高级内容
- 确保每个知识点都掌握再前进
- 遇到困难是正常的,耐心学习
-
多练习
- 每学一个知识点立即练习
- 编写至少 3-5 个相关程序
- 参考
course-code/中的示例
-
项目驱动
- 尽早开始做项目
- 项目是最好的学习方式
- 从小项目开始,逐步增加难度
-
寻求帮助
- 遇到问题先自己调试
- 查看
tutorials/c-basics/8. 实用调试技巧.txt - 向同学或助教求助
- 利用在线资源(Stack Overflow, CSDN)
每周学习计划建议:
- 周一至周五:每天 1-2 小时
- 周末:每天 3-4 小时
- 总计:每周 10-15 小时
学习时间分配:
- 40% 看教程和视频
- 40% 编写代码练习
- 20% 做项目和复习
❌ 错误做法:
- 只看不练,收藏即学会
- 跳过基础,直接学高级特性
- 代码出错就放弃
- 直接复制粘贴代码
- 考前突击,平时不学
✅ 正确做法:
- 边学边练,手写代码
- 打好基础,稳扎稳打
- 学会调试,理解错误
- 理解代码,自己实现
- 持续学习,定期复习
| 学习阶段 | 主要资源 | 辅助资源 |
|---|---|---|
| C 语言基础 | tutorials/c-basics/ |
course-code/ 前 10 课 |
| C 语言进阶 | tutorials/c-basics/6-8 |
course-code/ 11-14 课 |
| 项目实践 | tutorials/projects/ |
course-code/ 各课程项目 |
| 考试复习 | exams/ |
tutorials/ 全部 |
| C++ 入门 | cpp-materials/reference/ |
cpp-materials/slides/ |
| C++ 进阶 | cpp-materials/slides/ |
cpp-materials/review/ |
- 能独立编写包含函数和数组的程序
- 理解指针的基本概念
- 能够使用结构体组织数据
- 能够进行简单的文件操作
- 能够独立完成三子棋项目
- 能够设计简单的类
- 理解继承和多态的概念
- 能够使用 vector, list, map
- 能够重载基本运算符
- 能够编写类模板
- 能够独立完成学生管理系统
- 代码具有良好的模块化结构
- 能够处理用户输入错误
- 能够进行基本的性能优化
祝你学习顺利!坚持就是胜利!💪