计算机基础与编程环境
8 个知识点计算机基本构成、操作系统、网络概念、NOI规则、IDE使用
计算机的组成——CPU、内存与I/O设备
用生活中的厨房比喻,帮你理解计算机的三大核心部件如何协同工作。
操作系统基础——Windows和Linux
把操作系统比作计算机的大管家,介绍Windows和Linux的异同。
计算机网络与Internet基本概念
用寄信和快递比喻,带你了解网络如何传递数据。
计算机的历史和常见用途
从巨型机器到掌上电脑,回顾计算机的发展故事。
NOI竞赛的历史与规则
了解全国青少年信息学奥林匹克竞赛的来历和参赛要求。
位、字节与字
用钱罐和字母表解释计算机存储的最小单位。
程序设计语言与编译运行
把编程语言比作菜谱,解释从源代码到可执行文件的过程。
Dev-C++和IDE的使用
手把手教你使用Dev-C++这个编程工具,写出第一个C++程序。
C++语法基础
8 个知识点标识符、数据类型、运算符、表达式、输入输出
标识符、关键字与常量变量
学习如何给程序中的“东西”起名字,并区分固定不变的值和可以变化的值。
基本数据类型(int、long long)
了解整数在C++中的两种常见“包装箱”大小:普通整数和超长整数。
浮点型、字符型与布尔型
学会存储带小数点的数、单个字符以及“是/否”两种状态。
算术运算与关系运算
学会做数学计算和比较大小,像计算器一样灵活。
逻辑运算与位运算
学习“与、或、非”逻辑判断,以及计算机底层对二进制位的操作。
赋值运算与自增自减
学会给变量“赋值”和让变量自动加1减1的快捷写法。
运算优先级与结合性
搞清多个运算符同时出现时谁先算,避免“算错”的尴尬。
cin/cout与scanf/printf
学会两种让程序“说话”和“听话”的方法:C++风格和C风格。
控制结构
8 个知识点顺序、分支(if/switch)、循环(for/while/do-while)、嵌套
顺序结构程序设计
程序就像做菜一样,从上往下一步一步执行,这就是顺序结构。
if-else分支语句
就像日常做选择一样,用if-else让程序根据条件执行不同任务。
switch多分支语句
用“自动售货机”的比喻,教大家如何用switch语句让程序快速做出多个选择。
for循环
用生活中的小帮手“计数器”来理解for循环,学会让电脑重复做事情。
while循环
就像反复做同一件事直到条件改变,while循环让计算机重复执行代码直到条件不再成立。
do-while循环——先做一次,再决定要不要继续
介绍do-while循环的特点和用法,通过生活例子和代码帮助小朋友理解“至少执行一次”的概念。
循环嵌套
用生活中的套娃例子,教你如何让循环里面再套一个循环,解决需要重复做多遍重复事情的问题。
分支与循环综合应用
学习如何将分支结构(if-else)和循环结构(for或while)结合起来,像玩一个“数字暗号”游戏一样,让计算机做出智能的判断和重复操作。
数组与字符串
4 个知识点一维数组、二维数组、字符数组、string类
函数与递归
5 个知识点函数定义与调用、形参与实参、传值与传引用、递归函数
结构体与指针
5 个知识点结构体、联合体、指针、引用
STL与线性结构
5 个知识点vector、stack、queue、list、sort、链表、栈、队列
树结构
6 个知识点树的定义、二叉树的遍历、完全二叉树、哈夫曼树、二叉搜索树
树的定义与相关概念
树是一种像家谱一样的数据结构,由节点和边组成,有一个根节点和若干分支。
二叉树的定义与性质
二叉树是每个节点最多有两个子节点的树,它有特殊的数学性质,比如第k层最多有2^(k-1)个节点。
二叉树的遍历(前序、中序、后序)
遍历就是把二叉树的所有节点按某种顺序走一遍,常见的有前序、中序、后序三种方法。
完全二叉树与数组表示
完全二叉树可以用数组高效存储,父节点下标i,左孩子下标2i,右孩子下标2i+1。
哈夫曼树与哈夫曼编码
哈夫曼树是一种带权路径最短的二叉树,常用于数据压缩,通过给字符分配不同长度的二进制编码。
二叉搜索树
二叉搜索树是一种特殊二叉树,所有左子树节点小于根,所有右子树节点大于根,查找和插入都很快。
图基础
3 个知识点图的定义、邻接矩阵、邻接表
枚举与模拟
3 个知识点枚举法、模拟法
基础算法
5 个知识点贪心、递推、递归、二分法、倍增法
算法策略
3 个知识点前缀和、差分
排序算法
5 个知识点冒泡排序、选择排序、插入排序、计数排序
搜索与图遍历
4 个知识点深度优先搜索DFS、广度优先搜索BFS、Flood Fill
动态规划入门
4 个知识点动态规划基本思路、一维DP、背包DP、区间DP
数学与数论基础
10 个知识点进制转换、初等数论、排列组合、素数筛法
进制转换——用不同的数字语言说话
学习二进制、八进制、十进制、十六进制之间的转换方法,并了解如何在C++中实现。
整除、因数与质数——数字的“亲戚”关系
从整除的概念出发,认识因数(约数)和质数(素数),并用C++判断一个数是否为质数。
最大公约数(GCD)与最小公倍数(LCM)——找到数字的共同“因数”
理解两个数的最大公约数和最小公倍数的含义,并用C++编写程序计算它们。
模运算与取余——数轴上绕圈子的学问
理解模运算(取余)的含义和基本性质,并用C++中的 % 运算符解决问题。
整数唯一分解定理——把数字拆成质因子的积木
学习任何一个大于1的整数都可以唯一地分解成质数的乘积,并用C++编写质因数分解程序。
辗转相除法(欧几里得算法)——用减法求最大公约数的智慧
掌握欧几里得算法求最大公约数的原理和C++实现,它是数学史上最古老的算法之一。
素数筛法——埃氏筛和线性筛,批量“揪出”质数
学习用筛法高效地生成一定范围内的所有质数,埃氏筛简单易懂,线性筛更快更优。
加法原理与乘法原理——数数也有规律
理解计数的两个基本法则:加法原理(分类计数)和乘法原理(分步计数),并用C++简单计算。
排列与组合——选顺序还是选“团”
学习排列(考虑顺序)和组合(不考虑顺序)的概念及计算公式,并用C++计算。
杨辉三角——数字的“金字塔”
认识杨辉三角的构造与组合数的关系,并用C++编程输出前n行。