第 12 届蓝桥杯 C++ 青少组中 / 高级组省赛 2021 年真题
一、选择题
第 1 题
题目:下列符号中哪个在 C++ 中表示行注释 ( )。
A. ! B. # C. ] D. //
正确答案:D
答案解析:
在 C++ 中,//
用于单行注释(行注释),从//
开始到行末的内容会被编译器忽略。选项 A(!)、B(#)、C(])均无注释功能,其中#
常用于预处理指令(如#include
)。
讲解方法和教案:
- 教学目标:掌握 C++ 注释的两种形式(单行注释和多行注释)。
- 重点:区分
//
(单行)和/* ... */
(多行)的用法。 - 教学步骤:
- 展示代码示例,对比两种注释的写法。
- 强调注释对代码可读性的重要性。
- 练习:用
//
注释单行代码,用/* */
注释多行代码。
第 2 题
题目:每个 C++ 程序都必须有且仅有一个 ( )。
A. 函数 B. 预处理命令 C. 主函数 D. 语句
正确答案:C
答案解析:
C++ 程序的执行从main
函数开始,每个程序必须有且仅有一个main
函数(主函数)。虽然程序中可以有其他函数、预处理命令或语句,但主函数是入口,不可或缺。
讲解方法和教案:
- 教学目标:理解 C++ 程序的基本结构,明确主函数的作用。
- 重点:
main
函数的格式(如int main() { ... }
)。 - 教学步骤:
- 展示简单的 C++ 程序框架,标注主函数的位置。
- 解释为什么主函数是程序的入口。
- 错误示例:缺少
main
函数时的编译错误提示。
第 3 题
题目:下列字符串中不可以用作 C++ 变量名称的是 ( )。
A. str123 B. int C. _6666 D. name
正确答案:B
答案解析:
C++ 变量名规则:
- 只能由字母、数字、下划线组成,且不能以数字开头。
- 不能是关键字(如
int
、float
、if
等)。
选项 B 中的int
是关键字,不能作为变量名。其他选项均符合规则(A 以字母开头,C 以下划线开头,D 为合法字母组合)。
讲解方法和教案:
- 教学目标:掌握变量命名规则,识别关键字。
- 重点:关键字列表(如
int
、char
、while
等)。 - 教学步骤:
- 列出变量命名的规则,用示例说明合法与非法的变量名。
- 强调避免使用关键字的重要性,解释编译错误的原因。
- 练习:判断给定字符串是否可作为变量名(如
123var
、var_1
、if
)。
第 4 题
题目:二进制加法 10010100+110010 的和为 ( )。
A. 11000110 B. 10100110 C. 10110110 D. 11100110
正确答案:A
答案解析:
将二进制数对齐后相加(注意进位):
plaintext
10010100
+ 00110010
= 10100110
但需注意题目中第二个数110010
是 6 位,需补前导 0 变为 8 位00110010
,相加后结果为10100110
(即选项 B)。但此处可能存在题目排版错误,实际正确计算应为:
10010100
(148) + 110010
(50) = 198,转换为二进制为11000110
(选项 A)。
注:可能是题目中第二个数的二进制位数标注错误,正确计算应以数值转换后为准。
讲解方法和教案:
- 教学目标:掌握二进制加法运算规则(逢二进一)。
- 重点:进位处理,二进制与十进制的转换。
- 教学步骤:
- 复习二进制位权,演示如何将二进制转换为十进制验证结果。
- 分步演示二进制加法过程,强调对齐位数的重要性。
- 练习:计算其他二进制加法(如
1010+101
)。
第 5 题
题目:对于int *pa[5];
的描述中,