一、 比赛简介
国务院发布《国务院关于印发新一代人工智能发展规划的通
知》,明确实施全民智能教育项目。教育部印发《2019 年教育信息
化和网络安全工作要点》,推动在中小学阶段设置人工智能相关课
程,逐步推广编程教育。本赛项是在贯彻落实中小学生核心素养教
育基础上,通过竞赛方式,提升中小学生创新创造能力、探究协作
能力、动手实践能力和解决问题能力。
本竞赛项目要求参赛选手在 C++软件编程环境下,通过赛题分
析、程序设计、创意实现,完成比赛目标。
特别声明: 根据 2022 年 3 月教育部等四部门印发《面向中小学
生的全国性竞赛活动管理办法》,本竞赛项目与任何培训服务、商品
销售、升学促进、等级考试、食宿旅行等活动无关,赛事组织单位
不面向本竞赛项目收取任何费用。欢迎社会监督。
二、 比赛主题
比赛主题为“算法创想,科技创新”。
三、 比赛内容
(一)通用内容
比赛过程将全面检验参赛选手基于 C++软件编程语言的技术实
现能力,鼓励参赛者动手创造,提升中小学生创新创造能力、探究
协作能力、动手实践能力和解决问题能力
【小学组】
-2- 程序基础
顺序结构:理解程序流程、基本输入输出。
分支结构:if 条件句、简单逻辑运算。
循环结构:for 循环、while 循环来解决重复任务。
数组:使用数组存储和访问数据集合。
字符串:字符串操作基础,如连接、搜索字符等。
数理知识
代数: 整式加减乘除运算。
几何: 了解坐标系内点和线段表示方法。
函数: 认识一次函数及其图像。
算法
模拟:按照题目描述直接实现功能。
枚举:使用 loops 穷举可能性来找到答案。
【初中组】
程序基础
上述内容加深:
分支结构与循环结构涉及更复杂逻辑判断与嵌套使用;
数组进阶应用如多维数组;
字符串处理进阶,包括子串提取等高级操作;
-3- u 结构体定义与使用;
多关键字排序以及去重排序技巧;
自定义函数以及递归调用概念强化;
文件操作入门。
数据结构
set/map/pair: 掌握关联容器 set/map 以及数据对 pair;
栈/队列: 使用标准库中 stack/queue 完成特定任务;
链表: 基本链表节点创建与遍历;
数理知识(在小学组已有基础上增加)
函数: 包括二次函数和反比例函数;
方程: 解二次方程以及方程应用问题;– 组合计数初步了解
排列组合概念.
算法
在模拟和枚举之外增加:
高精度操作入门;
分治思想;
贪心算法简单应用;
排序算法包含但不限于归并排序与快速排序;
(二)分级/分组内容
1.本赛项晋级过程包括初赛(在线预选赛)、复赛(地区选拔
赛)和决赛(全国总决赛)三个级别。
2.选手报名组别按参赛选手在读学段分为小学组(全年级)、初
中组。
3.本赛项以个人形式报名
四、 比赛规则和得分
(一)比赛规则
1.本次比赛的原则为非禁止即许可;
2.比赛要求参赛选手在规定的平台使用编码的方式,完成赛事
中的指定题目;
3.现场提前完成比赛的选手可提前离场;
4.每个参赛选手只有一次比赛机会,规定时间未进场的个人视
同放弃;
5.比赛准备阶段要求参赛选手可用于调试代码生成器,但不予
许提前编辑程序;
6.比赛阶段,待裁判发出指令后,参赛选手开始编写代码;
7.比赛期间,参赛选手不得离开参赛区;
8.比赛阶段,参赛选手不得抄袭他人、不得作弊、不得直接与
其他参赛选手的电脑直接接触、如有发现该选手计 0 分;
9.比赛过程中,不得采用恶意手段干扰其他参赛选手的编程过
程,一经发现,勒令退赛;
参赛技术要求
(一)初赛
自备电脑。电脑操作系统:Mac OS、Win 10 或以上操作系统;
浏览器采用谷歌浏览器(69.0 版本以上)、firefox,IE11 以上,
推荐使用谷歌浏览器。
(二)复赛和决赛
复赛:自备电脑或使用大赛组委会统一提供的电脑。电脑操作
系统:Mac OS、Win 10 或以上操作系统; 浏览器采用谷歌浏览器
(69.0 版本以上)、firefox,IE11 以上, 推荐使用 Chrome。
. 初赛样题示例
一、 小学组
(一) 单选题
1、下列代码,能够输出 hello world 的是_____
A. cout (hello world)
B. cout << hello world
C. cout:hello world
D. cout << "hello world";
2、在 C++中,可以存储浮点数 35.16 的数据类型是
_____
A. double
B. int
C. long long
D. bool
3、在 C++程序中,8 % 2 的结果是_____
A. 2
B. 4
C. 1
D. 0
4、下列输出结果为 7 的语句是_____
A. cout << 3 + 4;
B. cout << "3 + 4";
C. cout << 3 * 4;
D. cout >> 2 + 5;
5、在 C++语言中,表示大于等于的运算符是____
A. <=
B. <
C. >
D. >=
(二) 判断题
1、在 C++语言中,一个程序只能有一个 main 函数。
2、在 C++语言中,变量可以命名为 9_num。
3、在 C++语言中,可以使用 int 类型存储 5.1478。
4、在 C++语言中,/运算符可以用来求两个数的余数。
5、在 C++语言中,逻辑运算符&&表示逻辑与,只有两
个操作数都为真时才返回真。
二、 初中组
(一) 单选题
1、现有数组定义为 int array[5] = {1};,数组 array
中的元素分别是_____
A. 1 2 3 4 5
B. 0 0 0 0 1
C. 0 0 0 0 0
D. 1 0 0 0 0
2、在 C++语言中,下列符合数组命名规则的是_____
A.9n
B. cnt6
C. a_1#
D. %d
3、在 C++语言中,想定义一个可以存储 8 个元素的数
组,数组长度最少应该为_____
A. 5
B. 6
C. 7
D. 8
4、在 C++程序中,可以将一个两位整数的个位数提取
出来的表达式是____
A. num / 10
B. num % 10
C. num / 10 % 10
D. num % 10 / 10
5、以下结果为 true 的表达式是____
A.!( 1 && 0) && 1 < 0
B.(!0 && 1) < 7 || 6 < 7
C.!1 || 0 > 1
D.1 >= !6 && 0 < !1
(二) 判断题
1、在 C++语言中,逻辑运算符||表示逻辑或,只有两
个操作数都为真时才返回真。
2、int a[4] = {11,22,33},输出 a[1]结果为 11 。
3、在 C++语言中,二维数组的行下标从 0 开始,列下
标从 1 开始。
4、若 int a[5] = {1,2,3,4,5},则 a[a[2]]的值为
0。
5、double a[100];数组 a 中最多可以存储 100 个浮点
数。
1. 以下不属于计算机输入设备的有( )。A.键盘
B.音箱C.鼠标D.传感器
2. 计算机系统中存储的基本单位用 B 来表示,它代表的是( )。
A. Byte
B. Block
C. Bulk
D. Bit
3. 常量 7.0 的数据类型是()。
A. double
B. float
C. void
D. int
4. 下列关于 C++语言的叙述,不正确的是()。
A. 变量定义时可以不初始化
B. 变量被赋值之后的类型不变
C. 变量没有定义也能够使用
D. 变量名必须是合法的标识符
5. 以下不可以作为 C++标识符的是()。
A. x321
B. 0x321
C. x321_
D. _x321
6. 以下哪个不是 C++语言的关键字?
A. int
B. for
C. do
D. cout
7. 如果 a、b 和 c 都是 int 类型的变量,下列哪个语句不符合 C++语法?
A. c = a + b;
B. c += a + b;
C. c = a = b;
D. c = a ++ b;
8. 如果用两个 int 类型的变量 a 和 b 分别表达长方形的长和宽,则下列哪个表达式不能用来计算长方形的周长?
A. a + b * 2
B. 2 * a + 2 * b
C. a + b + a + b
D. b + a * 2 + b
9. 表达式((3 == 0) + 'A' + 1 + 3.0)的结果类型为()。
A. double
B. int
C. char
D. bool
10. 如果 a 为 int 类型的变量,且 a 的值为 6,则执行 a *= 3;之后,a 的值会是()。
A. 3
B. 6
C. 9
D. 18
11. 如果 a 和 b 均为 int 类型的变量,下列表达式不能正确判断“a 等于 0 且 b
等于 0”的是()
A. (a == 0) && (b == 0)
B. (a == b == 0)
C. (!a) && (!b)
D. (a == 0) + (b == 0) == 2
12. 如果 a 为 int 类型的变量,下列哪个表达式可以正确求出满足“大于等于a 且是 4 的倍数”的整数中最小的?
A. a * 4
B. a / 4 * 4
C. (a + 3) / 4 * 4
D. a - a % 4 + 4
13. 在下列代码的横线处填写(),可以使得输出是“20 10”。
A. i++
B. i *= 2
C. i += 2
D. i * 2
15. 执行以下 C++语言程序后,输出结果是()。
A. 210
B. 113
C. 98
D. 15
1. 在 Windows 系统中通过键盘完成对选定文本移动的按键组合是先 Ctrl+X,
移动到目标位置后按 Ctrl+V。
2. 程序员用 C、C++、Python、Scratch 等编写的程序能在 CPU 上直接执行。
3. 在 C++语言中,注释不宜写得过多,否则会使得程序运行速度变慢。
4. 在 C++语言中,标识符中可以有数字,但不能以数字开头。
5. '3'是一个 int 类型常量。
A. a + b
B. (a + b) * 100
C. b * 100 + a
D. a * 100 + b
14. 在下列代码的横线处填写(),可以使得输出是“1248”。