GESP 1~4级知识点

C++ GESP 四级及以下 完整知识点总结

前言

本文严格覆盖GESP 一级~四级全部核心考点,按照编程基础→数据类型→输入输出→三大结构→数组→字符串→函数→基础算法→调试易错逻辑递进,知识点与代码完全分块,清晰易读,适配考级备考、系统复习、零基础学习。全文标号明确、体系完整、内容详实。


一、C++ 编程基础与程序结构(一级核心)

1.1 核心知识点

  1. 程序定义:计算机执行的指令集合,C++ 是编译型语言,执行流程:编写→编译→链接→运行。
  2. 标识符命名规则:由字母、数字、下划线组成;不能以数字开头;区分大小写;不能使用关键字。
  3. 注释:单行注释//、多行注释/* */,用于解释代码,不参与运行。
  4. 标准程序框架:必须包含输入输出头文件、标准命名空间、主函数main(程序唯一入口)。
  5. 关键字:int、char、float、double、bool、if、else、for、while、break、void等。
  6. 运算符优先级:算术运算(+ - * / %)> 关系运算(> < ==)> 逻辑运算(&& || !)> 赋值运算(=)。

1.2 配套代码块

// 1. 标准程序框架
#include <iostream>
using namespace std;
int main() {
    // 单行注释
    /* 多行注释 */
    cout << "GESP编程入门" << endl;
    return 0;
}

二、数据类型、变量与常量(一级核心)

2.1 核心知识点

  1. 基本数据类型:
    • 整型int:存储整数,4字节;
    • 字符型char:存储单个字符,1字节,单引号包裹;
    • 浮点型float/double:存储小数,double精度更高;
    • 布尔型bool:存储true(真)/false(假)
  2. 变量:可修改的数据,先定义后使用,格式:数据类型 变量名;
  3. 常量:定义后不可修改,分为字面常量和const常量。
  4. 类型转换:自动转换(小类型→大类型)、强制转换((目标类型)变量)。

2.2 配套代码块

// 1. 变量定义与赋值
#include <iostream>
using namespace std;
int main() {
    int age = 15;
    double score = 95.5;
    char ch = 'A';
    bool flag = true;
    cout << age << " " << score << " " << ch << " " << flag << endl;
    return 0;
}

// 2. 常量与类型转换
int main() {
    const int MAX = 100; // 常量
    double pi = 3.14;
    int num = (int)pi; // 强制转换
    cout << num << endl; // 输出3
    return 0;
}

三、标准输入与输出(一级核心)

3.1 核心知识点

  1. 标准输出cout:向屏幕打印数据,<<为输出运算符,endl表示换行。
  2. 标准输入cin:从键盘读取数据,>>为输入运算符,多个数据用空格/回车分隔。
  3. 用法:可连续输入输出、混合输出文字与变量。

3.2 配套代码块

// 1. 基础输出
#include <iostream>
using namespace std;
int main() {
    cout << "Hello GESP!" << endl;
    int a = 10;
    cout << "变量a的值:" << a << endl;
    return 0;
}

// 2. 基础输入
int main() {
    int a, b;
    cin >> a >> b;
    cout << "两数之和:" << a + b << endl;
    return 0;
}

四、程序三大结构(二级核心)

4.1 顺序结构

  1. 知识点:代码从上到下依次执行,无判断、无跳转,是最基础的程序结构。
// 顺序结构:求两数平均值
int main() {
    int a, b;
    cin >> a >> b;
    double avg = (a + b) / 2.0;
    cout << "平均值:" << avg << endl;
    return 0;
}

4.2 分支结构

  1. 知识点:根据条件判断,选择执行不同代码,包含if、if-else、if-else if、switch
  2. switch仅支持整型/字符型判断,必须搭配break防止穿透。
// 1. if-else 双分支
int main() {
    int score;
    cin >> score;
    if (score >= 60) cout << "及格" << endl;
    else cout << "不及格" << endl;
    return 0;
}

// 2. switch 分支
int main() {
    int day;
    cin >> day;
    switch (day) {
        case 1: cout << "周一"; break;
        case 2: cout << "周二"; break;
        default: cout << "输入错误";
    }
    return 0;
}

4.3 循环结构

  1. 知识点:重复执行一段代码,分为for(已知次数)、while(未知次数)、do-while(至少执行一次)。
  2. 循环控制:break跳出整个循环,continue跳过本次循环。
// 1. for 循环
int main() {
    for (int i = 1; i <= 10; i++) {
        cout << i << " ";
    }
    return 0;
}

// 2. while 循环
int main() {
    int i = 1;
    while (i <= 10) {
        cout << i << " ";
        i++;
    }
    return 0;
}

// 3. break与continue
int main() {
    // break:输出1-4
    for (int i=1; i<=10; i++) {
        if (i==5) break;
        cout << i;
    }
    // continue:输出1-10(跳过5)
    for (int i=1; i<=10; i++) {
        if (i==5) continue;
        cout << i;
    }
    return 0;
}

五、数组(三级核心)

5.1 一维数组

  1. 知识点:存储同类型多个数据,连续内存空间,下标从0开始,定义格式:类型 数组名[长度];
  2. 操作:遍历、赋值、求和、求最大值、顺序查找。
// 1. 一维数组定义与遍历
int main() {
    int a[5] = {1,2,3,4,5};
    for (int i=0; i<5; i++) {
        cout << a[i] << " ";
    }
    return 0;
}

// 2. 数组求和
int main() {
    int a[5] = {1,2,3,4,5};
    int sum = 0;
    for (int i=0; i<5; i++) sum += a[i];
    cout << "总和:" << sum << endl;
    return 0;
}

// 3. 顺序查找
int main() {
    int a[5] = {10,20,30,40,50};
    int x; cin >> x;
    bool found = false;
    for (int i=0; i<5; i++) {
        if (a[i]==x) { found = true; break; }
    }
    cout << (found ? "找到" : "未找到");
    return 0;
}

5.2 二维数组

  1. 知识点:表格形式存储数据,定义格式:类型 数组名[行][列];,双层循环遍历。
// 二维数组遍历
int main() {
    int a[3][2] = {{1,2},{3,4},{5,6}};
    for (int i=0; i<3; i++) {
        for (int j=0; j<2; j++) {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

六、字符数组与字符串(三级~四级核心)

6.1 核心知识点

  1. 字符数组:存储多个字符,字符串以\0(结束符)结尾。
  2. 常用字符串函数(需包含<cstring>):
    • strlen(s):求字符串长度;
    • strcpy(a,b):复制字符串;
    • strcmp(a,b):比较字符串;
    • strcat(a,b):拼接字符串。

6.2 配套代码块

#include <iostream>
#include <cstring>
using namespace std;
int main() {
    char s1[100], s2[100];
    cin >> s1;
    // 求长度
    cout << "长度:" << strlen(s1) << endl;
    // 复制字符串
    strcpy(s2, s1);
    cout << "复制结果:" << s2 << endl;
    // 比较字符串
    if (strcmp(s1, s2) == 0) cout << "字符串相同" << endl;
    return 0;
}

七、函数(四级核心)

7.1 核心知识点

  1. 作用:封装重复代码,实现模块化编程,提高代码复用性。
  2. 定义格式:返回值类型 函数名(参数列表) { 函数体 }
  3. 无返回值:用void;有返回值:用return返回数据。
  4. 值传递:函数内修改形参,不影响实参;函数需先声明后调用。

7.2 配套代码块

// 1. 无返回值函数
#include <iostream>
using namespace std;
void printStar() {
    cout << "*****" << endl;
}
int main() {
    printStar();
    return 0;
}

// 2. 带参数带返回值函数
int add(int a, int b) {
    return a + b;
}
int main() {
    cout << "和:" << add(10, 20) << endl;
    return 0;
}

// 3. 函数声明
int max(int a, int b);
int main() {
    cout << "最大值:" << max(5, 8) << endl;
    return 0;
}
int max(int a, int b) {
    return a > b ? a : b;
}

八、基础算法(三级~四级核心)

8.1 核心知识点

  1. 累加计数:循环累加数值,统计满足条件的元素个数。
  2. 数字拆分:通过/%拆分个位、十位、百位。
  3. 冒泡排序:双层循环,相邻元素比较交换,实现升序/降序排列。
  4. 逻辑运算:&&(且)、||(或)、!(非),用于复合条件判断。

8.2 配套代码块

// 1. 1~100累加
int main() {
    int sum = 0;
    for (int i=1; i<=100; i++) sum += i;
    cout << "总和:" << sum << endl;
    return 0;
}

// 2. 数字拆分
int main() {
    int n = 123;
    int ge = n % 10;
    int shi = n / 10 % 10;
    int bai = n / 100;
    cout << bai << " " << shi << " " << ge << endl;
    return 0;
}

// 3. 冒泡排序
int main() {
    int a[5] = {3,1,4,2,5};
    int n = 5;
    for (int i=0; i<n-1; i++) {
        for (int j=0; j<n-i-1; j++) {
            if (a[j] > a[j+1]) {
                int t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
        }
    }
    for (int i=0; i<n; i++) cout << a[i] << " ";
    return 0;
}

// 4. 判断闰年
int main() {
    int year;
    cin >> year;
    if ((year%4==0 && year%100!=0) || (year%400==0)) {
        cout << "闰年" << endl;
    } else cout << "平年" << endl;
    return 0;
}

九、调试技巧与高频易错点(全级别)

9.1 核心知识点

  1. 语法错误:忘记分号、括号不匹配、变量未定义、引号使用错误、赋值与判断符号混淆。
  2. 逻辑错误:死循环、数组下标越界、变量未初始化、整数除法错误、字符串缺少结束符。
  3. 调试方法:输出中间变量、分步测试、检查边界值、对照题目样例。
  4. 编程规范:代码缩进、标识符见名知意、添加注释、避免冗余代码。

9.2 易错示例代码

// 错误1:整数除法
int main() {
    int a = 5, b = 2;
    cout << a / b << endl; // 错误输出2,正确写法:a/2.0
    return 0;
}

// 错误2:数组下标越界
int main() {
    int a[3] = {1,2,3};
    cout << a[5]; // 下标超过范围,程序崩溃
    return 0;
}

十、GESP 一级~四级等级考点划分

10.1 一级考点

程序基础框架、基本数据类型、变量常量、标准输入输出、顺序结构、基础注释。

10.2 二级考点

分支结构(if/switch)、循环结构(for/while/do-while)、逻辑运算、循环控制语句。

10.3 三级考点

一维数组、二维数组、字符数组、顺序查找、累加计数、数字拆分、简单排序。

10.4 四级考点

字符串处理函数、函数定义与调用、值传递、冒泡排序、模块化编程、复杂算法。


十一、总 结

本文完整覆盖C++ GESP 四级及以下全部知识点,总字数约5100字,严格遵循知识点+分块代码的格式,逻辑清晰、标号统一、考点全覆盖。

学习核心逻辑:先掌握基础语法与输入输出→熟练运用三大结构控制流程→使用数组/字符串存储数据→通过函数实现代码封装→结合算法解决实际问题

备考核心:牢记程序框架、熟练书写代码、掌握调试技巧、重点练习数组与函数的结合题型,即可轻松通关GESP四级及以下考试。

2 个赞

推荐刷题平台:https://oj.codemao.cn/oj/problems

可能比洛谷好用哦!
2 个赞