跳转至

新版大纲要点

1、基础知识与编程环境

  1. 【 1 】计算机的基本构成(CPU、内存、I/O 设备等)
  2. 【 1 】Windows、Linux 等操作系统的基本概念及其常见操作
  3. 【 1 】计算机网络和 Internet 的基本概念
  4. 【 1 】计算机的历史和常见用途
  5. 【 1 】NOI 以及相关活动的历史
  6. 【 1 】NOI 以及相关活动的规则
  7. 【 1 】位、字节与字
  8. 【 1 】程序设计语言以及程序编译和运行的基本概念
  9. 【 1 】使用图形界面新建、复制、删除、移动文件或目录
  10. 【 1 】使用 Windows 系统下的集成开发环境 ( 例如 Dev C++ 等 )
  11. 【 1 】使用 Linux 系统下的集成开发环境 ( 例如 Code::Blocks 等 )
  12. 【 1 】g++、gcc 等常见编译器的基本使用

2、C++ 程序设计

2.1 程序基本概念

  • 【 1 】标识符、关键字、常量、变量、字符串、 表达式的概念
  • 【 1 】常量与变量的命名、定义及作用
  • 【 2 】头文件与名字空间的概念
  • 【 2 】编辑、编译、解释、调试的概念

2.2 基本数据类型

  • 【 1 】整数型:int 、 long long
  • 【 1 】实数型:float、 double
  • 【 1 】字符型:char
  • 【 1 】布尔型:bool

2.3 程序基本语句

  • 【 2 】cin 语句、scanf 语句、cout 语句、printf 语句、赋值语句、复合语句
  • 【 2 】if 语句、switch 语句、多层条件语句
  • 【 2 】for 语句、while 语句、do while 语句
  • 【 3 】多层循环语句

2.4 基本运算

  • 【 1 】算术运算:加、减、乘、除、整除、求余
  • 【 1 】关系运算:大于、大于等于、小于、 小于等于、等于、不等于
  • 【 1 】逻辑运算:与(&&)、或(||)、非(!)
  • 【 1 】变量自增与自减运算
  • 【 1 】三目运算
  • 【 2 】位运算:与(&)、或(|)、非(~)、 异或(^)、左移(<<)、右移(>>)

2.5 数学库常用函数

  • 【 3 】绝对值函数、四舍五入函数、下取整函数、 上取整函数、平方根函数、常用三角 函数、对数函数、指数函数

2.6 结构化程序设计

  • 【 1 】顺序结构、分支结构和循环结构
  • 【 2 】自顶向下、逐步求精的模块化程序设计
  • 【 2 】流程图的概念及流程图描述

2.7 数组

  • 【 1 】数组与数组下标
  • 【 1 】数组的读入与输出
  • 【 3 】二维数组与多维数组

2.8 字符串的处理

  • 【 2 】字符数组与相关函数
  • 【 2 】string 类与相关函数

2.9 函数与递归

  • 【 2 】函数定义与调用、形参与实参
  • 【 3 】传值参数与传引用参数
  • 【 2 】常量与变量的作用范围
  • 【 2 】递归函数

2.10 结构体与联合体

  • 【 3 】结构体
  • 【 3 】联合体

2.11 指针类型

  • 【 4 】指针
  • 【 4 】基于指针的数组访问
  • 【 4 】字符指针
  • 【 4 】指向结构体的指针

2.12 文件及基本读写

  • 【 2 】文件的基本概念、文本文件的基本操作
  • 【 2 】文本文件类型与二进制文件类型
  • 【 2 】文件重定向、文件读写等操作

2.13 STL 模板

  • 【 3 】算法模板库中的函数:min、max、swap、sort
  • 【 4 】栈 (stack)、队列 (queue)、链表 (list)、 向量(vector)等容器

3、数据结构

3.1 线性结构

  • 【 3 】链表:单链表、双向链表、循环链表
  • 【 3 】栈
  • 【 3 】队列

3.2 简单树

  • 【 3 】树的定义与相关概念
  • 【 4 】树的表示与存储
  • 【 3 】二叉树的定义与基本性质
  • 【 4 】二叉树的表示与存储
  • 【 4 】二叉树的遍历:前序、中序、后序

3.3 特殊树

  • 【 4 】完全二叉树的定义与基本性质
  • 【 4 】完全二叉树的数组表示法
  • 【 4 】哈夫曼树的定义和构造、哈夫曼编码
  • 【 4 】二叉搜索树的定义和构造

3.4 简单图

  • 【 3 】图的定义与相关概念
  • 【 4 】图的表示与存储:邻接矩阵
  • 【 4 】图的表示与存储:邻接表

4、算法

4.1 算法概念与描述

  • 【 1 】算法概念
  • 【 2 】算法描述:自然语言描述、流程图描述、 伪代码描述

4.2 入门算法

  • 【 1 】枚举法
  • 【 1 】模拟法

4.3 基础算法

  • 【 3 】贪心法
  • 【 3 】递推法
  • 【 4 】递归法
  • 【 4 】二分法
  • 【 4 】倍增法

4.4 数值处理算法

  • 【 4 】高精度的加法
  • 【 4 】高精度的减法
  • 【 4 】高精度的乘法
  • 【 4 】高精度整数除以单精度整数的商和余数

4.5 排序算法

  • 【 3 】排序的基本概念
  • 【 3 】冒泡排序
  • 【 3 】选择排序
  • 【 3 】插入排序
  • 【 3 】计数排序

4.6 搜索算法

  • 【 5 】深度优先搜索
  • 【 5 】广度优先搜索

4.7 图论算法

  • 【 4 】深度优先遍历
  • 【 4 】广度优先遍历
  • 【 5 】泛洪算法(flood fill )

4.8 动态规划

  • 【 4 】动态规划的基本思路
  • 【 4 】简单一维动态规划
  • 【 5 】简单背包类型动态规划
  • 【 5 】简单区间类型动态规划

5、数学与其他

5.1 数及其运算

  • 【 1 】自然数、整数、有理数、实数及其算 术运算(加、减、乘、除)
  • 【 1 】进制与进制转换:二进制、八进制、 十进制、十六进制

5.2 初等数学

  • 【 1 】代数(初中部分)
  • 【 1 】几何(初中部分)

5.3 初等数论

  • 【 3 】整除、因数、倍数、指数、质 ( 素 ) 数、 合数
  • 【 3 】取整
  • 【 3 】模运算与同余
  • 【 3 】整数唯一分解定理
  • 【 3 】辗转相除法(欧几里得算法)
  • 【 4 】素数筛法:埃氏筛法与线性筛法

5.4 离散与组合数学

  • 【 2 】集合
  • 【 2 】加法原理
  • 【 2 】乘法原理
  • 【 4 】排列
  • 【 4 】组合
  • 【 4 】杨辉三角

5.5 其他

  • 【 2 】ASCII 码
  • 【 2 】格雷码