杨校老师竞赛课堂之C++语言GESP一级笔记
考试大纲
GESP一级考试大纲
-
计算机基础与编程环境
-
计算机历史
-
变量的定义与使用
-
基本数据类型(整型、浮点型、字符型、布尔型)
-
输入与输出(cin与cout、scanf与printf)
-
基本运算(算术运算、关系运算、逻辑运算)
-
基本控制结构(顺序结构、选择结构、循环结构)
一、计算机基础与编程环境
-
计算机历史
二、基本数据类型
数据类型分类 | 具体类型 | 存储范围 / 特点 | 关键说明 |
整数类型 | int | 范围: -2147483648~2147483647, 简记为 - 2×10⁹~2×10⁹或 - 2³¹~2³¹-1 | 用于存储常规整数 |
long long | 范围: -9223372036854775808~9223372036854775807, 简记为 - 9×10¹⁸~9×10¹⁸或 - 2⁶³~2⁶³-1 | 用于存储较大整数 | |
实数类型 | float | 存储 6~7 位有效数字 | 精度较低,适用于对精度要求不高的场景 |
double | 存储 15~16 位有效数字 | 精度较高,日常实数存储常用 | |
布尔类型 | bool | 仅存储 false(0)或 true(1),所有非 0 数据放入后均变为 1 | 用于表示逻辑判断结果 |
字符类型 | char | 仅存储单个字符,用单引号引起来;本质是 ASCII 码(整数) | 1. 字符与 ASCII 码对应:0-9 对应 48-57,a-z 对应 97-122,A-Z 对应 65-90 2. 字符 0 转数字 0:字符 0 - '0' |
字符串类 | string | 存储 1 个字符串(一串字符),用双引号引起来,下标从 0 开始 | string 类变量不能用 scanf 输入、printf 输出 |
三、变量
(一)变量定义
-
一般形式:数据类型 变量名 1, 变量名 2; 例:int a, b; // 定义两个 int 类型变量 a 和 b
(二)变量命名规则
-
由字母、数字、下划线任意组合而成,数字不能在开头
-
区分大小写(如 a 与 A 是不同变量名)
-
不能是关键词(如 int、class、return、for 等)
-
同一括号内定义的变量不能重名
(三)变量赋值
-
赋值方式:变量名 = 数据;
-
执行过程:将 “=” 右边的数据赋值给左边的变量,多次赋值保留【最后一次】结果 例:int x; x = 5; x = 8; // 最终 x 的值为 8
四、输入与输出
(一)输入方式
输入类型 | 语法格式 | 关键说明 |
C++ 输入(cin) | 1. 单个变量:cin >> 变量名; 2. 多个变量:cin >> 变量名 1 >> 变量名 2; | 1. 输入数据按 “>>” 方向自左向右依次存储到变量 2. 多个数据可用空格或换行隔开 3. 错误写法:cin >> a >> " " >> b;(输入中不能加引号内容) 4. 输入前必须提前定义变量 |
C 语言输入(scanf) | scanf ("输入格式", & 变量名 1, & 变量名 2...); (头文件:<cstdio>) | 1. 格式化参数: int 用 % d, long long 用 % lld, float 用 % f, double 用 % lf, char 用 % c, 字符数组用 % s(字符串名前不加 &) 2. 特殊格式: %2d(数字宽度 2,不足补空格)、 %02d(数字宽度 2,不足补 0) 3. 变量名前必须加 &(取地址符), string 类变量不可用 |
(二)输出方式
输出类型 | 语法格式 | 关键说明 |
C++ 输出(cout) | 1. 单个变量:cout << 变量名; 2. 多个变量(空格分隔):cout << 变量名 1 << " " << 变量名 2; 3. 多个变量(换行分隔):cout << 变量名 1 << endl << 变量名 2; | 1. 变量数据按 “<<” 方向自左向右依次输出 2. 格式化输出需加头文件<iomanip>: - 保留小数:cout <<fixed << setprecision (位数) << 数据; - 控制整数宽度(补空格):cout <<setw (位数) << 数据; |
C 语言输出(printf) | printf ("输出格式", 变量名 1, 变量名 2...); (头文件:<cstdio>) | 1. 格式化参数与 scanf 一致,变量名前不加 & 2. 特殊字符: \n(换行) \t(相当于 4 个空格) \\(输出 \) \"(输出") \'(输出 ') %%(输出 %) 3. string 类变量不可用 |
五、基本运算
(一)算术运算
-
运算符:+(加)、-(减)、*(乘)、/(除)、%(取余)
-
特殊规则:
-
两个整数相除结果为整数(如 5/2=2),常用于平均分配场景
-
“%” 仅适用于整数,结果为余数(如 5%2=1)
-
优先级:*、/、% 高于 +、-
-
(二)关系运算
-
运算符:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)、!=(不等于)
-
运算结果:逻辑值(真为 1,假为 0)
-
例:10>5 结果为 1(真),10==5 结果为 0(假)
(三)逻辑运算
运算符 | 含义 | 运算规则 | 例 |
&& | 并且(逻辑与) | 全真才真,一假则假 | 3>2 && 5>4 结果为 1(真) |
|| | 或者(逻辑或) | 全假才假,一真则真 | 3>5 || 5>4 结果为 1(真) |
! | 不是(逻辑非) | 非真即假,非假即真 | !(3>5) 结果为 1(真) |
-
否定规则:
-
!(条件 1 && 条件 2) = ! 条件 1 || ! 条件 2
-
!(条件 1 || 条件 2) = ! 条件 1 && ! 条件 2
-
六、基本控制结构
(一)顺序结构
-
特点:按代码顺序自上而下执行,每行按运算符优先级执行
-
生活示例:起床→穿衣→洗漱→吃饭
(二)选择结构
结构类型 | 语法格式 | 执行逻辑 |
单分支(if) | if (判断条件){ 满足条件执行的语句; } | 条件成立则执行大括号内语句,不成立则忽略 |
双分支(if-else) | if (判断条件){ 满足条件执行的语句; }else{ 不满足条件执行的语句; } | 条件成立执行 if 内语句,不成立执行 else 内语句;if 和 else 有且只有一个执行 |
多分支(if-else if-else) | if (判断条件 1){ 语句 1; } else if (判断条件 2){ 语句 2; }...else{ 语句 n; } | 依次判断条件,满足某一条件则执行对应语句,执行后结束结构;可无 else |
条件运算(三目运算符) | 表达式 1 ? 表达式 2 : 表达式 3; | 相当于双分支 if-else,表达式 1 成立则取表达式 2 结果,否则取表达式 3 结果;可直接赋值 例:int max = a>b ? a : b;(求 a 和 b 的最大值) |
switch 结构 | switch (表达式){ case 常量 1: 语句 1; break; case 常量 2: 语句 2; break; ... default: 语句 n; } | 1. 表达式仅能判断整型或字符型 2. 依次匹配 case 常量,匹配成功则执行对应语句,直到 break 结束;无匹配则执行 default 3. 缺少 break 会继续执行后续 case 语句 |
(三)循环结构
循环类型 | 语法格式 | 适用场景 | 执行逻辑 |
while 循环 | while (判断条件){ 重复执行的语句(循环体); } | 重复次数不确定的场景 | 1. 判断条件成立,执行循环体 2. 循环体执行后,再次判断条件,直到条件不成立结束循环 |
for 循环 | for (表达式 1; 表达式 2; 表达式 3){ 重复执行的语句(循环体); } | 重复次数确定、枚举区间的场景 | 1. 先执行表达式 1(初始化) 2. 判断表达式 2(循环条件),成立则执行循环体 3. 执行表达式 3(更新),再回到步骤 2;不成立则结束循环 4. 三个表达式均可省略,但可能导致死循环 |
(四)循环控制语句
语句 | 功能 | 例 |
continue; | 跳过本次循环剩余语句,直接进入下一次循环判断 | for (int i=1;i<=5;i++){if (i==3) continue; cout<<i;} // 输出 1 2 4 5 |
break; | 立即跳出当前循环,结束循环执行 | for (int i=1;i<=5;i++){if (i==3) break; cout<<i;} // 输出 1 2 |
return 0; | 直接结束整个程序(通常用于 main 函数) | 循环中遇到 return 0;,程序直接终止 |