1-语法组
语法组
初识编程
- 什么是编程,为什么要学编程,编程能做什么
- 编程语言的分类
- 低级语言与高级语言
- 编译型语言,解释性语言与混合型语言
- HelloGitHub 榜单
- 主流编程语言介绍
- 集成开发环境 IDE
- IDE 的组成:编辑器,编译器/解释器,调试器,构建工具,项目管理
- 主流 C++ IDE 介绍
- 主流编译器介绍
- 编译的过程:预处理,编译,汇编,链接
Hello World
- 程序结构基础
- 认识头文件
- 认识命名空间
- 认识 main 函数
- 认识返回值
- cout 与 endl 的使用
- 基本语法要素
- 预编译指令与井号
- 语句与分号
- 代码块,括号与缩进
- 代码注释规范
- 注释的概念与用途
- 单行注释与多行注释的写法
数据类型与变量
- 基本数据类型
- 为什么要设计数据类型
- 常见基本数据类型:int,long long,double,char,bool
- 数据类型的存储大小与 sizeof 的使用
- 变量与常量
- 变量的定义
- 赋值运算符
- 变量的初始化
- 命名规则与命名规范
- 常量的定义:const 与 constexpr
- 数据的输入输出
- cin 与 cout 的使用
- 控制浮点数输出精度
- 数据的运算与转换
- 交换两个变量与 swap
- 强制类型转换
- 隐式转换与显式转换
输入与输出
- C 风格与 C++ 风格的输入输出
- 头文件
<cstdio>
<iostream>
<bits/stdc++.h>
- scanf,printf
- cin,cout
- 缓冲区
- 缓冲区的概念
- 为什么要设计缓冲区
- 缓冲区的刷新:flush 与 endl
#define endl '\n'
- 同步流
ios::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
运算符与表达式
- 赋值运算符
- 自增与自减
- 算术运算符
- 位运算
- 比较运算符
- 逻辑运算符
- 短路求值
条件分支
- if
- if else
- if 嵌套
- else 的就近原则
- 三目运算符
循环
- while
- 无限读入到 EOF
- do while
do{ }while(false);
- 短除法拆位(数位分离)
- for
- continue,break
- 循环嵌套
数组
- 局部与全局
- 变量的生命周期与可见性
- 一维数组
- 序列数组与桶数组
- memset
- 二维数组
- 方向数组 dx,dy
字符串
- ASCII 码
- char 数组与 string
- getline()
- getchar() 与 cin.get()
信息在计算机中的表示
- 信息与二进制
- 十进制转二进制
- 二进制转十进制
- 八进制,十六进制
- 整数的表示,类型与范围
- 原码,反码,补码
- int 和 long long 的表达范围
- unsigned 无符号类型修饰词
- 浮点数与 IEEE754 规则
- 字面量的表示与科学计数法
内存,地址与指针
- 内存与地址
- 为什么需要内存和地址
- 变量在内存中的存储
- 数组在内存中的连续布局
- C++ 程序在内存中的布局
- 堆栈空间,为什么大数组不能开函数内
- 指针与引用
- 一级指针
- 取地址与解引用
- nullptr
- new,delete 与 delete[]
- 野指针与悬空指针
- 引用的语义与使用场景
函数
- 为什么需要函数
- 代码复用与模块化
- 函数的基本结构
- 返回值类型与 void
- 参数列表,形参与实参,默认参数
- 函数声明与定义的区别
- 拷贝传参(值传递)与引用传参
- 函数重载
对拍
- 文件读写
- freopen
- fclose 的坑
- 生成随机数
- rand(已经淘汰)与 mt19937
- Windows 系统下的对拍
结构体与类
- 结构体基础
- 成员变量
- 成员函数
- 结构体的生命周期
- 构造函数
- 析构函数
- this 指针
- 结构体的扩展特性
- 友元函数
- 重载运算符
- 结构体与指针
- 指向结构体的指针
- 指针访问成员的方法
- 访问修饰符
- 从结构体到类
- 面向对象的概念
- 封装,继承,多态
- template 模板初步
高精度封装
- 高精加高精
- 高精减高精
- 高精乘高精
- 高精除低精
- 高精模低精
- 压位高精技巧
模拟与枚举
- 历年 CSP-J 相关真题
- 历年 GESP 1-4 级相关真题
- 历年 NOIP 普及组相关真题
- 历年各大赛事合适难度的相关真题