一、 比赛简介 国务院发布《国务院关于印发新一代人工智能发展规划的通 知》,明确实施全民智能教育项目。教育部印发《2019 年教育信息 化和网络安全工作要点》,推动在中小学阶段设置人工智能相关课 程,逐步推广编程教育。本赛项是在贯彻落实中小学生核心素养教 育基础上,通过竞赛方式,提升中小学生创新创造能力、探究协作 能力、动手实践能力和解决问题能力。 本竞赛项目要求参赛选手在 C++软件编程环境下,通过赛题分 析、程序设计、创意实现,完成比赛目标。 特别声明: 根据 2022 年 3 月教育部等四部门印发《面向中小学 生的全国性竞赛活动管理办法》,本竞赛项目与任何培训服务、商品 销售、升学促进、等级考试、食宿旅行等活动无关,赛事组织单位 不面向本竞赛项目收取任何费用。欢迎社会监督。 二、 比赛主题 比赛主题为“算法创想,科技创新”。 三、 比赛内容
(一)通用内容 比赛过程将全面检验参赛选手基于 C++软件编程语言的技术实 现能力,鼓励参赛者动手创造,提升中小学生创新创造能力、探究 协作能力、动手实践能力和解决问题能力 【小学组】 -2- 程序基础 顺序结构:理解程序流程、基本输入输出。 分支结构:if 条件句、简单逻辑运算。 循环结构:for 循环、while 循环来解决重复任务。 数组:使用数组存储和访问数据集合。 字符串:字符串操作基础,如连接、搜索字符等。 数理知识 代数: 整式加减乘除运算。 几何: 了解坐标系内点和线段表示方法。 函数: 认识一次函数及其图像。 算法 模拟:按照题目描述直接实现功能。 枚举:使用 loops 穷举可能性来找到答案。 【初中组】 程序基础 上述内容加深: 分支结构与循环结构涉及更复杂逻辑判断与嵌套使用; 数组进阶应用如多维数组; 字符串处理进阶,包括子串提取等高级操作; -3- u 结构体定义与使用; 多关键字排序以及去重排序技巧; 自定义函数以及递归调用概念强化; 文件操作入门。 数据结构 set/map/pair: 掌握关联容器 set/map 以及数据对 pair; 栈/队列: 使用标准库中 stack/queue 完成特定任务; 链表: 基本链表节点创建与遍历; 数理知识(在小学组已有基础上增加) 函数: 包括二次函数和反比例函数; 方程: 解二次方程以及方程应用问题;– 组合计数初步了解 排列组合概念. 算法 在模拟和枚举之外增加: 高精度操作入门; 分治思想; 贪心算法简单应用; 排序算法包含但不限于归并排序与快速排序;
(二)分级/分组内容 1.本赛项晋级过程包括初赛(在线预选赛)、复赛(地区选拔 赛)和决赛(全国总决赛)三个级别。 2.选手报名组别按参赛选手在读学段分为小学组(全年级)、初 中组。 3.本赛项以个人形式报名
![](http://zhangshiyu.com/zb_users/upload/2024/05/20240526124820171669890065084.png)
四、 比赛规则和得分
(一)比赛规则 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”。