C/C++零基础入门精讲实战培训课程大纲
一、培训对象
1. 编程初学者:无任何编程经验,希望从零开始掌握C/C++语言。
2. 转行开发者:有其他语言基础(如Python/Java),需快速切入C/C++开发。
3. 在校学生:计算机相关专业学生,需系统学习C/C++以应对课程或竞赛需求。
4. 嵌入式/游戏开发爱好者:希望进入底层开发、硬件交互或游戏引擎领域。
5. 职场提升者:需通过C/C++优化现有项目性能(如算法加速、内存管理)。
二、培训目标
1. 语言基础:
· 掌握C/C++语法、数据类型、运算符、流程控制等核心概念。
· 理解指针、内存管理、结构体/类等高级特性。
2. 实战能力:
· 能独立完成基础项目开发(如计算器、学生管理系统)。
· 熟练使用调试工具(GDB/Visual Studio Debugger)定位问题。
3. 进阶技能:
· 理解面向对象编程(OOP)思想,掌握封装、继承、多态。
· 学会使用标准模板库(STL)简化开发(如vector、map、算法)。
4. 项目经验:
· 通过实战项目(如贪吃蛇游戏、简易数据库)积累开发经验。
· 了解代码规范、模块化设计及版本控制(Git)。
三、培训内容与案例说明
模块1:编程基础与环境搭建
· 内容:
· 编程思维入门:算法、流程图、伪代码。
· 开发环境配置:安装GCC/G++、Visual Studio、Code::Blocks等工具。
· 第一个C程序:编写“Hello World”,理解编译与运行过程。
· 案例:
· 输出九九乘法表:
#include <stdio.h>
int main() {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
printf("%d×%d=%-2d ", j, i, i * j);
}
printf("\n");
}
return 0;
}
目标:掌握循环结构与格式化输出。
模块2:C语言核心语法
· 内容:
· 数据类型:整型、浮点型、字符型、布尔型(C++)。
· 运算符:算术、逻辑、位运算、三元运算符。
· 流程控制:if-else、switch-case、while/do-while/for循环。
· 案例:
· 判断闰年:
#include <stdio.h>
int main() {
int year;
printf("输入年份: ");
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
printf("%d是闰年\n", year);
} else {
printf("%d不是闰年\n", year);
}
return 0;
}
目标:理解条件判断与逻辑运算符。
模块3:函数与数组
· 内容:
· 函数定义与调用:参数传递(值传递/指针传递)、返回值。
· 数组:一维/二维数组、字符数组(字符串)、数组作为函数参数。
· 案例:
· 计算数组平均值:
#include <stdio.h>
float average(int arr[], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return (float)sum / size;
}
int main() {
int nums[] = {10, 20, 30, 40, 50};
printf("平均值: %.2f\n", average(nums, 5));
return 0;
}
目标:掌握函数封装与数组操作。
模块4:指针与内存管理
· 内容:
· 指针基础:地址、指针变量、解引用、指针运算。
· 动态内存分配:malloc/free、new/delete(C++)。
· 常见错误:野指针、内存泄漏、悬垂指针。
· 案例:
· 动态数组求和:
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
printf("输入数组大小: ");
scanf("%d", &n);
int *arr = (int *)malloc(n * sizeof(int));
if (arr == NULL) {
printf("内存分配失败\n");
return 1;
}
for (int i = 0; i < n; i++) {
arr[i] = i + 1;
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}
printf("和: %d\n", sum);
free(arr);
return 0;
}
目标:理解指针与动态内存管理。
模块5:结构体与文件操作
· 内容:
· 结构体:定义、初始化、嵌套结构体。
· 文件I/O:打开/关闭文件、读写文本/二进制文件。
· 案例:
· 学生信息管理系统:
#include <stdio.h>
#include <string.h>
struct Student {
char name[50];
int age;
float score;
};
int main() {
FILE *fp = fopen("students.txt", "w");
if (fp == NULL) {
printf("无法打开文件\n");
return 1;
}
struct Student s1 = {"张三", 20, 85.5};
fwrite(&s1, sizeof(struct Student), 1, fp);
fclose(fp);
return 0;
}
目标:掌握结构体与文件持久化存储。
模块6:C++面向对象编程
· 内容:
· 类与对象:构造函数、析构函数、成员函数。
· 继承与多态:基类/派生类、虚函数、纯虚函数。
· 运算符重载:自定义运算符行为。
· 案例:
· 简单计算器类:
#include <iostream>
using namespace std;
class Calculator {
public:
int add(int a, int b) { return a + b; }
int subtract(int a, int b) { return a - b; }
};
int main() {
Calculator calc;
cout << "5 + 3 = " << calc.add(5, 3) << endl;
cout << "5 - 3 = " << calc.subtract(5, 3) << endl;
return 0;
}
目标:理解类与对象的基本用法。
模块7:STL标准模板库
· 内容:
· 容器:vector、list、map、set。
· 算法:sort、find、count、transform。
· 迭代器:遍历容器元素。
· 案例:
· 使用vector存储学生成绩并排序:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> scores = {85, 92, 78, 90, 88};
sort(scores.begin(), scores.end());
for (int score : scores) {
cout << score << " ";
}
return 0;
}
目标:掌握STL容器与算法的使用。
模块8:综合实战项目
· 内容:
· 项目1:贪吃蛇游戏(C++/控制台)
· 使用面向对象设计蛇、食物、游戏逻辑。
· 通过键盘事件控制蛇移动,检测碰撞与得分。
· 项目2:简易数据库(C/文件操作)
· 实现增删改查功能,数据持久化存储到文件。
· 使用结构体组织数据,通过指针操作链表。