第 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];的描述中,
