第 12 届蓝桥杯 C++ 青少组中 / 高级组省赛 2021 年 4 月 24 日真题(选择题)
第 1 题 单选题
题目:在 C++ 中下列哪个不属于字符型常量 ( )。
A. ‘a’
B. ‘\x2A’
C. ‘@’
D. “F”
答案:D
解题思路:字符型常量使用单引号括起单个字符(如 A、C),或转义字符(如 B 中的十六进制转义字符)。D 选项 “F” 使用双引号,属于字符串常量,而非字符型常量。
第 2 题 单选题
题目:以下变量定义不正确的是 ( )。
A. int a=8, b, c;
B. float c=1.233;
C. int if;
D. char d='i';
答案:C
解题思路:C 选项中 “if” 是 C++ 的关键字(用于条件判断),不能作为变量名。其他选项均符合变量定义规则:A 定义多个整型变量;B 定义浮点型变量并初始化;D 定义字符型变量并赋值。
1.A定义了多个整数型变量
2.B定义了浮点型变量并初始化
3.C中 “if” 是 C++ 的关键字(用于条件判断),不能作为变量名
4.D定义了字符型变量并赋值
第 3 题 单选题
题目:已知 “int n=9;”,则执行语句 “n*=n+=n%=2;” 后,n 的值为 ( )。
A. 4
B. 1
C. 8
D. 18
答案:A
解题思路:运算符优先级从右到左(赋值运算符结合性为右结合):
1.n%=2,为9%2=1
2.n+=1,为1+1=2
3.n*=2,为2*2=4
第 4 题 单选题
题目:二进制加法 11010 + 10110 的和为 ( )。
A. 110000
B. 11000
C. 101110
D. 111010
答案:A
解题思路(共两种):
第一种:先将11010和10110转换为十进制数
11010=1*2^4+1*2^3+0*2^2+1*2^1+0*2=16+8+2=26
10110=1*2^4+0*2^3+1*2^2+1*2^1+0*2^0=16+4+2=22
26+22=48,再将48转换为二进制
48/2=24 余0
24/2=12 余0
12/2=6 余0
6/2=3 余0
3/2=1 余1
1/2=0 余1
倒序排列:110000
第二种:二进制逐位相加(逢二进一):
11010(26)
+ 10110(22)
= 110000(48)
计算过程:最低位 0+0=0,次低位 1+1=10(写 0 进 1),第三位 0+1+1=10(写 0 进 1),第四位 1+0+1=10(写 0 进 1),最高位 1+1+1=11(写 1 进 1),最终结果 110000
第 5 题 单选题
题目:C++ 中函数的返回值类型是由 ( )。
A. 调用该函数的主调用函数类型决定的
B. return 语句中的表达式类型决定的
C. 定义该函数所指的数据类型决定的
D. 系统自动决定的
答案:C
解题思路:函数定义时声明的返回值类型(如int func()中的int)决定了函数的返回值类型。return语句的表达式会被强制转换为该类型,与调用函数无关,选 C。