蓝桥杯青少年创意编程 C++组
赛前集训教程包
版本-190919
蓝桥杯大赛组
1
目录
第 01 课 基本数据类型及运算符................................................................................................... 4
1.1、基本数据类型及类型转换.............................................................................................. 4
1.2、变量与常量.......................................................................................................................5
1.3、字符与字符串...................................................................................................................6
1.4、运算符...............................................................................................................................6
第 02 课 基本程序结构....................................................................................................................8
2.1、顺序结构程序设计...........................................................................................................8
2.2、分支结构程序设计...........................................................................................................9
2.3、循环结构程序设计........................................................................................................ 12
第 03 课 数组................................................................................................................................. 16
3.1、一维数组及二维数组.................................................................................................... 16
3.2、数组的输入和输出........................................................................................................ 18
3.3、数组元素的遍历............................................................................................................ 20
3.4、数组元素排序................................................................................................................ 20
3.5、字符数组........................................................................................................................ 24
第 04 课 函数................................................................................................................................. 25
4.1、函数的定义和使用........................................................................................................ 25
4.2、函数的递归调用............................................................................................................ 27
2
4.3、变量的作用域:局部变量和全局变量........................................................................27
第 05 课 简单算法......................................................................................................................... 28
5.1、进制转换........................................................................................................................ 28
5.2、模拟算法........................................................................................................................ 29
5.3、枚举算法........................................................................................................................ 31
第 06 课 基本数据结构................................................................................................................. 34
6.1、结构体............................................................................................................................ 34
6.2、栈.................................................................................................................................... 35
6.3、队列................................................................................................................................ 38
6.4、树.................................................................................................................................... 41
6.5、图.................................................................................................................................... 47
第 07 课 指针................................................................................................................................. 48
7.1、概念................................................................................................................................ 48
7.2、引用与运算.................................................................................................................... 49
7.3、指针与数组。................................................................................................................ 50
第 08 课 基本算法......................................................................................................................... 51
8.1、高精度算法.................................................................................................................... 51
8.2、递推算法........................................................................................................................ 52
8.3、分治算法........................................................................................................................ 52
8.4、贪心算法........................................................................................................................ 53
8.5、搜索算法(宽度优先搜索、深度优先搜索)............................................................54
8.6、动态规划算法................................................................................................................ 55
3
第 01 课 基本数据类型及运算符
1.1、基本数据类型及类型转换
1. 基本数据类型
整型:int、longlong
int 与 long long 的存储范围不同,一般情况下我们用 int 即可,但是如果题目
中给的数据范围较大,则选择使用 long long。
布尔型:bool
布尔类型只有两个值,false 和 true。通常用来判断条件是否成立。
字符型:char
char 类型的变量代表的是单个字符,
例如:
char a;//定义一个字符型变量
cin>>a;//从键盘输入一个字符存入变量 a 中。
a=‘*’;//给变量 a 赋一个字符’*’。
注意:字符是用单引号来表示’’。
实型:float、double
float 与 double 的精确度不同,如果题目没有特别要求,我们一般使用 double,
如果题目明确告诉你使用单精度浮点数数据类型或者 float,则要使用 float。
2. 数据类型的转换
4
(1)自动类型转换(隐式类型转换)
在不同数据类型的混合运算中,编译器会隐式地进行数据类型转换,称为自动类
型转换。
自动类型转换遵循下面的规则:
①若参与运算的数据类型不同,则先转换成同一类型,然后进行运算。
②转换按数据长度增加的方向进行,以保证精度不降低。例如 int 类型和 long
类型运算时,先把 int 类型转成 long 类型后再进行运算。
③在赋值运算中,赋值号两边的数据类型不相同时,将把右边表达式值的类
型转换为左边变量的类型。如果右边表达式值的数据类型长度比左边长时,将丢
失一部分数据。
④在赋值语句中,赋值号两边数据类型一定是相兼容的类型,如果等号两边
数据类型不兼容,语句在编译时会报错。
(2)强制类型转换(显示类型转换)
自动类型转换不能实现目的时,可以显式进行类型转换,称为强制类型转换。
一般形式:(数据类型)(表达式)
注意:数据类型加小括号这个整体才是强制类型转换的符号,后面的表达式可以
加小括号,也可以不加,如果不加的话则遵循就近原则,谁离得强制类型转换符
号近,系统则强制类型转换谁。
例:int a;a=(int)1.5;a 的值为 1。
1.2、变量与常量
1. 变量
5
变量可以看作是存储数据的小盒子,一个小盒子里面只能存放一个具体的值,而
且这个值可以改变。
例如:inta= 3;a 就是一个变量
2. 常量
常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。
常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和
布尔值。
常量就像是常规的变量,只不过常量的值在定义后不能进行修改。
1.3、字符与字符串
1、字符就是单个字符,字符串就是多个字符的集合。
2、单个空白字符和空白字符串是两个概念,在 C++中字符就是单个字符,字符
串是用\0 结尾的,字符和字符串在操作上也不同,复制等等是不一样的。
字符串简介:
字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为
s="a1a2···an"(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,
字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字
串(一串二进制数字)。
1.4、运算符
1. 赋值运算符
在 C++里面,一个等号“=”代表的是赋值,赋值运算符是将赋值运算符右侧
6
的值赋值给左侧的变量。
2. 算术运算符
C++中有 5 个基本的算术运算符:+(加)-(减)、*(乘)、/(除)、%(取余)。
注意:
① 两个整数相除,得到的结果值保留整数位
② 取余运算符两边的数字必须都得是整数
3. 逻辑运算符
C++中有三个基本的逻辑运算符:&&(与)、||(或)、!(非)
逻辑非:经过逻辑非运算,其结果与原来相反。
逻辑与:若参加运算的某个条件不成立,其结果就不成立,只有当参加运算的所
有条件都成立,其结果才成立。
逻辑或:若参加运算的某个条件成立,其结果就成立,只有当参加运算的所有条
件都不成立,其结果才不成立。
4. 关系运算符
C++中有六个基本的关系运算符:>(大于)、>=(大于等于)、<(小于)、<=
(小于等于)、 ==(等于)、 !=(不等于)
符号
>
>=
<
<=
举例
10>5
10>=10
10<5
10<=10
意义
大于
大于等于
小于
小于等于
7
==
!=
等于
不等于
10==5
10!=5
第 02 课 基本程序结构
2.1、顺序结构程序设计
1. 输入语句:
cin 是 C++的输入语句,与 cout 语句一样,为了叙述方便,常常把由 cin 和运
算符”>>”实现输入的语句称为输入语句或 cin 语句。
cin 语句的一般格式为:
cin>>变量 1>>变量 2>>……>>变量 n;
与 cout 类似,一个 cin 语句可以分写成若干行,如
cin>>a>>b>>c>>d;
也可以写成
cin>>a;
cin>>b;
cin>>c;
cin>>d;
以上书写变量值均可以以从键盘输入:1 2 3 4
也可以分多行输入数据:
1
2 3
8