Skip to content

🎉C++ 语法入门

Update: 2-8-2026 By Yonas Luo Version 1.0

第一章:输入和输出

1、C++ 程序基本结构

每个 C++ 程序都必须包含一个主函数 main(),程序从这里开始运行:

cpp
#include <iostream>
using namespace std;

int main() 
{
    cout << "Hello, C++!" << endl;
    return 0;
}

📝:

  • #include <iostream>:引入输入输出库
  • using namespace std;:使用标准命名空间
  • int main():主函数,程序从这里开始
  • cout:用于输出,可以输出字符串和变量
  • endl:换行
  • return 0;:表示程序正常结束
  • ;:表示一个语句结束,忘记书写可能导致编译错误或逻辑异常

2、输出语句 cout

cout 是标准输出语句,用来在屏幕上显示内容。

2.1 基本输出

cpp
cout << "Hello, World!";

2.2 输出多个内容

cpp
int a = 10, b = 20;
cout << "a = " << a << ", b = " << b << endl;

2.3 输出换行

可以使用 endl\n

cout << "第一行" << endl;
cout << "第二行\n";

3. 输入语句 cin

cin 用于从键盘输入数据。

cin 本质上是从 输入缓冲区 读取数据,如果缓冲区没有数据,程序才会等待用户从键盘输入。

3.1 输入一个变量

cpp
int a;
cin >> a;
cout << "输入的数字是:" << a << endl;

3.2 输入多个变量

cpp
int x, y;
cin >> x >> y;
cout << "两数之和为:" << x + y << endl;

📝:

  • 输入时用空格或回车分隔;
  • 如果输入数据类型不匹配,会导致错误结果。

4. 注释语法

注释是程序中不被执行的文字,主要用于说明和标记。编译器会直接忽视。

1. 单行注释

cpp
// 这是单行注释

2. 多行注释

cpp
/* 这是
多行注释 
可以一次性注释多行*/

📝:利用注释的特性,有时候可以利用它来临时“取消”一段代码的运行,常用语调试程序。

第二章:变量与数据类型

1、变量的概念

变量是程序运行中用于存储数据的“容器”,变量名是这个容器的标签。每个变量都占用一定的内存空间,它有一个名字,属于某种数据类型。

在使用变量前必须先声明,即告诉编译器它的类型和名称。

cpp
int a;        // 声明一个整型变量 a
double b;     // 声明一个浮点型变量 b
char c;       // 声明一个字符型变量 c

📝:

  • 变量必须先声明后使用,否则编译报错
  • 变量名区分大小写,例如 numNum 是两个不同变量(即大小写敏感)
  • 变量名只能包含字母、数字和下划线,且不能以数字开头

2、数据类型

C++ 常见基本数据类型:

数据类型说明例子
int整型,用于整数int a = 5;
float单精度浮点数,用于小数float f = 3.14;
double双精度浮点型,用于小数double lf = 3.1415926;
char字符型,用于单个字符char c = 'A';
bool布尔型,真或假bool flag = true;

📝:

  • 整型和浮点型在运算时会自动进行类型转换(例如 int + double → double);
  • 字符用单引号 'A',字符串用双引号 "Hello"
  • 布尔型只能是 truefalse
  • float 精度约为 7 位小数,double 精度约为 15 位小数。
  • 字符可以直接进行数学运算,'A' + 1 = 'B'

3、变量的初始化与赋值

3.1 声明同时赋值

cpp
int a = 10;
double pi = 3.14159;
char grade = 'A';
bool flag = false;

3.2 先声明后赋值

cpp
int x;
x = 5;       // 赋值操作

📝:

  • 赋值用 =,表示将右边的值存入左边变量;

4、常量

常量在程序运行过程中值不能改变,通常用 const 声明。

cpp
const double PI = 3.14159;
const int DAYS = 7;

📝:

  • 常量名习惯使用大写字母,便于区分变量;
  • 对于不允许改变的值,使用常量可以避免错误。

5、输入与输出变量

变量通常与 cincout 配合使用。

cpp
int a;
double b;

cin >> a >> b;           // 输入两个变量
cout << "a = " << a << ", b = " << b << endl;

📝:

  • 输入多个变量时,用空格或回车分隔;
  • 输出时可以连续输出多个变量和文字说明。

6、变量使用注意事项

  • 变量必须先声明再使用;
  • 变量名不能和 C++ 关键字重复,如 int, return 等;
  • 不使用初始化的变量可能导致未定义行为;
  • 注意类型匹配,避免将浮点数赋值给整型变量造成截断。

第三章:运算符与表达式

1、运算符

运算符是对变量或常量进行运算的符号,包括算术运算、关系运算、逻辑运算等。 表达式是由变量、常量和运算符组成的计算式。

cpp
int a = 5, b = 2;
int sum = a + b;    // 加法运算

📝:

  • 运算符作用于一个或多个操作数;
  • 表达式计算结果可以赋值给变量;
  • 一级考试常考的表达式一般比较简单,注意运算顺序。

2、算术运算符

算术运算符用于数学计算,常见包括:

运算符说明示例
+加法a + b
-减法a - b
*乘法a * b
/除法a / b
%取模(余数)a % b
++自增,变量加 1a++++a
--自减,变量减 1a----a

📝:

  • 除法 / 对整型会舍弃小数,只保留整数部分;
  • % 只能用于整数;
  • 自增、自减分前置和后置,一级考试一般只考理解用途。
cpp
int a = 5;
cout << a++ << endl; // 输出 5,之后 a 变为 6
cout << ++a << endl; // 先加 1,a 变为 7,再输出 7

3、关系运算符

关系运算符用于比较两个值,结果为布尔类型 truefalse

运算符说明示例
==等于a == b
!=不等于a != b
>大于a > b
<小于a < b
>=大于等于a >= b
<=小于等于a <= b
cpp
int a = 5, b = 3;
bool result = a > b; // true
cout << result << endl;

📝:

  • 关系运算符结果用于判断条件或赋值给布尔变量;
  • 注意 === 区别:= 是赋值,== 是比较。

4、逻辑运算符

逻辑运算符用于多个布尔条件的组合判断。

运算符说明示例
&&逻辑与(且)a > 0 && b > 0
||逻辑与(或者)a > 0 || b > 0
!逻辑非(取反)!(a > 0)
cpp
int a = 5, b = -2;
bool flag = (a > 0) && (b > 0); // false
cout << flag << endl;
bool flag1 = (a > 0 && b > 0) || (c > 0); // 复合逻辑
cout << "flag1 = " << flag1 << endl; // 输出 1 (true)

📝:

  • && 两边都为真才为真;
  • || 两边有一边为真就为真;
  • ! 用于取反。

由于 C++ 语法支持复合逻辑,你可以同时对多个条件进行判断。 注意逻辑运算符也有优先级:逻辑非 ! > 逻辑与 && > 逻辑或 ||。 一般可以使用括号 () 指明运算顺序,避免疏忽导致逻辑错误。特别的,由于中括号和大括号在程序里面有其他含义,所以统一使用小括号,最内层的最先计算。

5、表达式与优先级

  • 表达式可以包含多个运算符,例如 a + b * c
  • 运算顺序遵循优先级规则
    1. 括号 ()
    2. 乘法 *、除法 /、取模 %
    3. 加法 +、减法 -
    4. 关系运算符
    5. 逻辑运算符
cpp
int a = 2, b = 3, c = 4;
int result = a + b * c;  // 2 + (3*4) = 14
  • 可以用括号改变运算顺序:
cpp
int result2 = (a + b) * c; // (2+3)*4 = 20

第四章:流程控制

1、流程控制

流程控制用于改变程序的执行顺序,主要包括:

  1. 条件判断:根据条件决定是否执行某段代码
  2. 循环结构:重复执行代码
  3. 跳转语句:改变程序执行的流程

2、条件判断 if 语句

if 语句根据条件表达式的真假决定是否执行代码块。

2.1 单分支 if

cpp
int a;
cin >> a;
if (a > 0) {
    cout << "a 是正数" << endl;
}

2.2 双分支 if-else

cpp
int a;
cin >> a;
if (a % 2 == 0) {
    cout << "a 是偶数" << endl;
} else {
    cout << "a 是奇数" << endl;
}

2.3 多分支 if- else if -else

cpp
int score;
cin >> score;
if (score >= 90) {
    cout << "优秀" << endl;
} else if (score >= 60) {
    cout << "及格" << endl;
} else {
    cout << "不及格" << endl;
}

📝:

  • 条件表达式必须返回布尔值 truefalse
  • 多分支条件会从上到下依次判断,满足第一个条件后跳过后续分支
  • 在分支语句中 if是必须的,而else ifelse 视具体情况而定,其中else if 可以有多个

3、循环结构

循环结构用于重复执行代码,for循环一般用于已知次数的循环,while一般用于不确定次数的循环。

3.1 for 循环

cpp
for (int i = 1; i <= 5; i++) {
    cout << "i = " << i << endl;
}

结构说明:

cpp
for (初始化; 条件; 步长) {
    循环体;
}
  • 初始化:循环变量初始值
  • 条件:循环继续的判断条件
  • 步长:每次循环结束后变量变化

3.2 while 循环

cpp
int i = 1;
while (i <= 5) {
    cout << "i = " << i << endl;
    i++;
}
  • while 先判断条件,条件为真才执行循环体。
  • 注意循环变量变化,否则容易形成死循环。

3.3 do-while 循环

cpp
int i = 1;
do {
    cout << "i = " << i << endl;
    i++;
} while (i <= 5);
  • do-while 先执行一次循环体,再判断条件,至少执行一次。

4、跳转语句

  • break:立即跳出循环
  • continue:跳过本次循环,进入下一次循环
cpp
for (int i = 1; i <= 5; i++) {
    if (i == 3) continue; // 跳过 i=3
    cout << i << endl;
}

第五章:数组

1、概念

  • 数组是存储 同类型数据的连续空间
  • 每个元素都有一个下标索引,下标从 0 开始。
  • 可以通过下标直接访问或修改元素。
cpp
int arr[5];       // 定义一个整型数组,长度为5
arr[0] = 10;      // 第1个元素赋值
arr[1] = 20;      // 第2个元素赋值
cout << arr[0];   // 输出第1个元素

2、数组定义与初始化

cpp
int a[5] = {1, 2, 3, 4, 5}; // 定义并初始化数组
  • 可以只初始化部分元素,未初始化的元素值不确定。
  • 也可以省略数组长度,让编译器根据初始化数量自动确定:
cpp
int a[] = {1, 2, 3, 4};  // 数组长度为4

C++ 支持用常量或直接数字定义数组长度:

cpp
int n = 0;
cin >> n;
int arr[n];   // 使用固定数字定义数组长度
int arr[n];   // C++ 不支持变长数组(VLA),建议用固定长度或 vector<int>

3、数组访问

  • 通过下标访问:
cpp
cout << a[0] << endl; // 第1个元素
cout << a[3] << endl; // 第4个元素

4、数组循环操作

  • 使用 for 循环遍历数组:
cpp
int a[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
    cout << "a[" << i << "] = " << a[i] << endl;
}
  • 使用 for 循环将多个数据输入数组:
cpp
int n;
cin >> n;
int arr[100];
for (int i = 0; i < n; i++) {
    cin >> arr[i];
}

5、多输入数组示例

cpp
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;           // 输入数组长度
    int arr[100];       // 假设数组最大长度为100

    // 输入 n 个元素
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }

    // 输出数组元素
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

    return 0;
}

📝:

  1. 输入整数 n,表示数组实际长度;
  2. 使用 for 循环依次输入每个元素;
  3. 再用循环输出数组元素;

第六章:IPO 模型

1、概念

  • IPO = Input → Process → Output(输入 → 处理 → 输出)
  • 是分析程序功能的基本模型,帮助理清思路和步骤。

2、组成

  1. Input(输入) 程序运行需要的数据,例如用户输入、文件数据、常量等。
  2. Process(处理) 程序对输入数据进行处理、计算、逻辑判断等操作。
  3. Output(输出) 程序处理后的结果,例如显示在屏幕上、写入文件等。

3、示例

题目:输入两个整数,输出它们的和。

IPO 分析

  • Input:整数 ab
  • Process:计算 sum = a + b
  • Output:输出 sum
cpp
#include <iostream>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;       // Input
    int sum = a + b;     // Process
    cout << sum << endl; // Output
    return 0;
}

第七章:浮点数格式化输出

  • 使用 fixed + setprecision(n) 控制输出的小数位数。单纯的 setprecision(n) 只控制有效数字,和小数无关。
  • 需要包含头文件 <iomanip>
cpp
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    double x = 3.1415926;

    cout << fixed << setprecision(2); // 保留两位小数
    cout << x << endl;  // 输出 3.14

    cout << setprecision(4); // 再设置 4 位小数
    cout << x << endl;  // 输出 3.1416
}

第八章:示例

例题 1:单变量输入输出

题目:输入一个整数 x,输出它加上 5 的结果。

示例输入

3

示例输出

8

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    int x;
    cin >> x;
    cout << x + 5 << endl;
    return 0;
}

例题 2:多变量输入输出

题目:输入两个整数 ab,输出它们的和与差。

示例输入

10 3

示例输出

和: 13
差: 7

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    cout << "和: " << a + b << endl;
    cout << "差: " << a - b << endl;
    return 0;
}

例题 3:条件判断(单分支)

题目:输入一个整数 n,如果 n 为正数,输出 "正数"

示例输入

5

示例输出

正数

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    if (n > 0) {
        cout << "正数" << endl;
    }
    return 0;
}

例题 4:条件判断

题目:输入一个整数 n,判断它是奇数还是偶数。

示例输入

7

示例输出

奇数

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    if (n % 2 == 0) {
        cout << "偶数" << endl;
    } else {
        cout << "奇数" << endl;
    }
    return 0;
}

例题 5:条件判断

题目:输入一个成绩(0~100),输出等级。

示例输入

75

示例输出

及格

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    int score;
    cin >> score;
    if (score >= 90) {
        cout << "优秀" << endl;
    } else if (score >= 60) {
        cout << "及格" << endl;
    } else {
        cout << "不及格" << endl;
    }
    return 0;
}

例题 6:for 循环

题目:输出 1~10 的整数,每行一个。

示例输出

1
2
3
4
5
6
7
8
9
10

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 10; i++) {
        cout << i << endl;
    }
    return 0;
}

例题 7:while 循环

题目:输入一个整数 n,用 while 循环输出从 n 到 1 的整数。

示例输入

5

示例输出

5
4
3
2
1

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    while (n > 0) {
        cout << n << endl;
        n--;
    }
    return 0;
}

例题 8:逻辑运算

题目:输入两个整数 ab,判断是否都为正数。

示例输入

3 5

示例输出

都为正数

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    if (a > 0 && b > 0) {
        cout << "都为正数" << endl;
    } else {
        cout << "至少有一个非正" << endl;
    }
    return 0;
}

例题 9:数组操作(单输入)

题目:输入 5 个整数,输出数组元素的和。

示例输入

1 2 3 4 5

示例输出

15

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    int arr[5];
    int sum = 0;
    for (int i = 0; i < 5; i++) {
        cin >> arr[i];
        sum += arr[i];
    }
    cout << sum << endl;
    return 0;
}

例题 10:数组操作(多输入)

题目:先输入数组长度 n,再输入 n 个整数,输出最大值。

示例输入

4
7 3 9 2

示例输出

9

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int arr[100];
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    int maxVal = arr[0];
    for (int i = 1; i < n; i++) {
        if (arr[i] > maxVal) {
            maxVal = arr[i];
        }
    }
    cout << maxVal << endl;
    return 0;
}

例题 11:浮点数格式化输出

题目:输入一个浮点数 x,输出它保留两位小数的结果。

示例输入

3.14159

示例输出

3.14

参考代码

cpp
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    double x;
    cin >> x;
    cout << fixed << setprecision(2) << x << endl;
    return 0;
}

例题 12:判断字符类型

题目:输入一个字符 c,判断它是大写字母还是小写字母。

示例输入

G

示例输出

大写字母

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    char c;
    cin >> c;
    if (c >= 'A' && c <= 'Z') {
        cout << "大写字母" << endl;
    } else if (c >= 'a' && c <= 'z') {
        cout << "小写字母" << endl;
    } else {
        cout << "其他字符" << endl;
    }
    return 0;
}

例题 13:字母反转转换

题目:输入一个大写字母 c,输出与它对称的字母(A ↔ Z,B ↔ Y…)。

示例输入

B

示例输出

Y

参考代码

cpp
#include <iostream>
using namespace std;

int main() {
    char c;
    cin >> c;
    char mirrored = 'Z' - (c - 'A'); // 字符可以直接做数学运算
    cout << mirrored << endl;
    return 0;
}

💬 与我联系 QQ:774165314 | 微信:Yonas_Luo