C++编程 课堂笔记
第1课:开发环境搭建
1.1 IDE介绍与安装
简明定义:IDE是帮助我们写代码的"智能笔记本"
推荐选择: - 🎯 Visual Studio:功能最强,像"编程游乐场" - 🎯 Code::Blocks:简单轻便,适合初学者 - 🎯 Dev-C++:经典软件,安装快速
安装步骤: 1. 就像安装游戏一样简单! 2. 下载 → 运行安装包 → 点击"下一步" 3. 等待安装完成
1.2 第一个C++程序
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
程序结构说明:
📁 程序结构
├── #include <iostream> // 拿来"说话"的工具箱
├── using namespace std; // 使用标准工具
├── int main() // 程序开始的地方
└── {} // 把要做的事情包起来
1.3 编译、链接和执行
过程图示:
[写代码] → [编译] → [链接] → [运行]
↓ ↓ ↓ ↓
.cpp文件 → .obj文件 → .exe文件 → 看到结果
通俗理解: - 编译:把英语翻译成计算机能懂的语言 - 链接:把需要的工具都打包在一起 - 执行:让计算机按照指令工作
第2课:基本语法与数据类型
2.1 关键字与标识符
关键字:C++的"保留词",不能用作名字
int, if, for, while, return...
标识符命名规则: - ✅ 可以:字母、数字、下划线 - ✅ 必须:字母或下划线开头 - ❌ 不能:用关键字,用特殊符号
起名技巧:
int age; // 年龄
float score; // 分数
string studentName;// 学生姓名(驼峰式)
2.2 基本数据类型
数据类型家族:
| 类型 | 中文名 | 存储什么 | 例子 |
|---|---|---|---|
int |
整数 | 整数值 | 10, -5, 100 |
float |
单精度小数 | 带小数点的数 | 3.14, 2.5 |
double |
双精度小数 | 更精确的小数 | 3.1415926 |
char |
字符 | 单个字母/符号 | 'A', '1', '+' |
bool |
布尔 | 真/假 | true, false |
内存大小比较:
bool (1位) < char (1字节) < int (4字节) < float (4字节) < double (8字节)
2.3 变量与常量
变量:会变化的"储物盒"
int age = 10; // 声明并初始化
age = 11; // 可以改变
常量:不变的"保险箱"
const double PI = 3.14159; // 圆周率不变
// PI = 3.14; ❌ 错误!常量不能修改
2.4 运算符
算术运算符:
int a = 10, b = 3;
a + b; // 13 (加)
a - b; // 7 (减)
a * b; // 30 (乘)
a / b; // 3 (除 - 整数除法)
a % b; // 1 (取余数)
关系运算符(返回true/false):
a == b; // false (等于?)
a != b; // true (不等于?)
a > b; // true (大于?)
a < b; // false (小于?)
逻辑运算符:
bool isSunny = true, isWarm = false;
isSunny && isWarm; // false (而且)
isSunny || isWarm; // true (或者)
!isSunny; // false (不是)
2.5 类型转换
自动转换(隐式转换):
int a = 10;
double b = 3.14;
double result = a + b; // a自动变成10.0
手动转换(显式转换):
double pi = 3.14;
int whole = static_cast<int>(pi); // 变成3,小数部分丢失
第3课:流程控制
3.1 条件语句
if语句流程图:
┌─────────────┐
│ 条件判断 │
└──────┬──────┘
↓
┌──────┴──────┐
true │ │ false
↓ ↓
┌─────────┐ ┌─────────┐
│ 执行代码 │ │跳过或执行│
│ 块A │ │ else块 │
└─────────┘ └─────────┘
if-else if-else:
int score = 85;
if (score >= 90) {
cout << "优秀" << endl;
} else if (score >= 80) {
cout << "良好" << endl; // 这个会被执行
} else if (score >= 60) {
cout << "及格" << endl;
} else {
cout << "不及格" << endl;
}
switch语句(多个选择):
int day = 3;
switch (day) {
case 1: cout << "星期一"; break;
case 2: cout << "星期二"; break;
case 3: cout << "星期三"; break; // 执行这个
default: cout << "其他天";
}
3.2 循环语句
for循环(知道循环次数):
// 输出1到5
for (int i = 1; i <= 5; i++) {
cout << i << " ";
}
// 输出:1 2 3 4 5
for循环执行过程:
开始 → i=1 → i<=5? → 输出1 → i++ → i=2 → i<=5? → 输出2 → ... → i=6 → 结束
while循环(条件满足就循环):
int count = 1;
while (count <= 5) {
cout << count << " ";
count++; // 不要忘记改变条件!
}
do-while循环(至少执行一次):
int number;
do {
cout << "请输入正数: ";
cin >> number;
} while (number <= 0); // 如果是负数,重新输入
3.3 跳转语句
break:立即结束循环
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // 当i等于5时跳出循环
}
cout << i << " ";
}
// 输出:1 2 3 4
continue:跳过本次循环,继续下一次
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue; // 跳过3
}
cout << i << " ";
}
// 输出:1 2 4 5
第4课:复合数据类型
4.1 数组
一维数组:像一排储物柜
int scores[5] = {90, 85, 78, 92, 88};
// 索引: 0 1 2 3 4
cout << scores[0]; // 输出90
scores[2] = 80; // 把78改成80
多维数组:像数学课的座位表
// 3行4列的表格
int classroom[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
cout << classroom[1][2]; // 输出7(第2行第3列)
4.2 字符串
C风格字符串(字符数组):
char name1[] = "小明"; // 自动计算长度
char name2[10] = "小红"; // 预留空间
cout << name1; // 输出:小明
string(更简单的字符串):
#include <string>
using namespace std;
string name = "张三";
name = name + "同学"; // 连接字符串
cout << name.length(); // 输出字符串长度
4.3 结构体
定义结构体:创建新的数据类型
// 定义"学生"这种新类型
struct Student {
string name;
int age;
float score;
};
使用结构体:
Student xiaoming; // 创建一个小明
xiaoming.name = "小明";
xiaoming.age = 12;
xiaoming.score = 95.5;
cout << xiaoming.name << "考了" << xiaoming.score << "分";
4.4 枚举
定义枚举:给数字起名字
enum Weekday {
MONDAY, // 0
TUESDAY, // 1
WEDNESDAY, // 2
THURSDAY, // 3
FRIDAY // 4
};
使用枚举:
Weekday today = WEDNESDAY;
if (today == WEDNESDAY) {
cout << "今天是星期三!" << endl;
}
第5课:函数
5.1 函数的定义与声明
函数就像"魔法咒语": - 输入 → 处理 → 输出
函数结构:
// 函数定义
返回类型 函数名(参数列表) {
// 函数体
return 结果;
}
// 例子:计算两个数的和
int add(int a, int b) {
int result = a + b;
return result;
}
使用函数:
int main() {
int sum = add(3, 5); // 调用函数
cout << "3+5=" << sum << endl;
return 0;
}
5.2 参数传递
值传递:传递复印件
void change(int x) {
x = 100; // 只改变复印件
}
int num = 10;
change(num);
cout << num; // 还是10,原件没变
引用传递:传递原件
void change(int &x) { // &表示引用
x = 100; // 改变原件
}
int num = 10;
change(num);
cout << num; // 变成100了!
5.3 函数重载
同名但参数不同:
// 版本1:两个整数相加
int add(int a, int b) {
return a + b;
}
// 版本2:三个整数相加
int add(int a, int b, int c) {
return a + b + c;
}
// 版本3:两个小数相加
double add(double a, double b) {
return a + b;
}
自动选择:
add(2, 3); // 调用版本1
add(1, 2, 3); // 调用版本2
add(1.5, 2.5); // 调用版本3
5.4 其他函数特性
内联函数(小函数加速):
inline int square(int x) {
return x * x;
}
默认参数:
void greet(string name, string word = "你好") {
cout << word << ", " << name << "!" << endl;
}
greet("小明"); // 输出:你好, 小明!
greet("小红", "嗨"); // 输出:嗨, 小红!
5.5 递归函数
递归:自己调用自己
例子:计算阶乘:
5! = 5 × 4!
4! = 4 × 3!
3! = 3 × 2!
2! = 2 × 1!
1! = 1
代码实现:
int factorial(int n) {
if (n == 1) { // 停止条件
return 1;
} else {
return n * factorial(n - 1); // 自己调用自己
}
}
cout << factorial(5); // 输出120 (5×4×3×2×1)
📚 学习小贴士
编程好习惯
- 起好名字:变量名要能看出用途
- 写注释:用
//解释代码做什么 - 分段测试:写完一小段就测试
- 保持整洁:代码要对齐,加空格
常见错误提醒
- ❌ 忘记分号
; - ❌ 中文标点符号
- ❌ 变量未声明就使用
- ❌ 大括号不匹配
练习建议
- 每天写代码15-30分钟
- 先理解例子,再自己修改
- 遇到错误不要怕,这是学习的机会
- 多做小项目,比如计算器、猜数字游戏
这份笔记会随着学习不断更新,记得经常复习哦!加油,小程序员!🚀