C++编程 课堂笔记

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)

📚 学习小贴士

编程好习惯

  1. 起好名字:变量名要能看出用途
  2. 写注释:用//解释代码做什么
  3. 分段测试:写完一小段就测试
  4. 保持整洁:代码要对齐,加空格

常见错误提醒

  • ❌ 忘记分号 ;
  • ❌ 中文标点符号
  • ❌ 变量未声明就使用
  • ❌ 大括号不匹配

练习建议

  1. 每天写代码15-30分钟
  2. 先理解例子,再自己修改
  3. 遇到错误不要怕,这是学习的机会
  4. 多做小项目,比如计算器、猜数字游戏

这份笔记会随着学习不断更新,记得经常复习哦!加油,小程序员!🚀