第15届 蓝桥杯 C++编程青少组中/高级选拔赛 202403 真题答案及解析
第 1 题 【 单选题 】
(110010)₂+(c3)₁₆的结果是( )。
A:(240)₁₀
B:(11110101)₂
C:(366)₈
D:(366)₈
解析:
(110010)₂ = (50)₁₀
(C3)₁₆ = (195)₁₀
所以(110010)₂+(C3)₁₆=(245)₁₀=(11110101)₂
答案:
B
第 2 题 【 单选题 】
表达式1000/3的结果是( )。
A:333
B:333.3
C:334
D:333.0
解析:
C++ 中的除法规则:
- 如果两个操作数都是整数,那么结果也是整数(即截断小数部分)。
- 如果有一个操作数是浮点数,那么结果就是浮点数。
答案:
A
第 3 题 【 单选题 】
下列选项中,判断a等于1并且b等于1正确的表达式是( )。
A:!((a!=1)&&(b!=1))
B:!((a!=1)||(b!=1))
C:!(a==1)&&(b==1)
D:(a=1)&&(b=1)
解析:
选项 A:
!((a!=1)&&(b!=1))
- 这个表达式的逻辑是“a 不等于 1 并且 b 不等于 1”的取反。
- 当
a == 1或b == 1时,((a!=1)&&(b!=1))为假,取反后为真。- 但这并不能保证
a == 1并且b == 1。- 例如,当
a == 1且b == 2时,表达式仍然为真。- 因此,选项 A 错误。
选项 B:
!((a!=1)||(b!=1))
- 这个表达式的逻辑是“a 不等于 1 或者 b 不等于 1”的取反。
- 当
a == 1并且b == 1时,((a!=1)||(b!=1))为假,取反后为真。- 当
a != 1或b != 1时,((a!=1)||(b!=1))为真,取反后为假。- 因此,选项 B 正确。
选项 C:
!(a==1)&&(b==1)
- 这个表达式的逻辑是“a 不等于 1 并且 b 等于 1”。
- 这显然与目标不符。
- 因此,选项 C 错误。
选项 D:
(a=1)&&(b=1)
- 这个表达式使用了赋值运算符
=而不是比较运算符==。(a=1)会将a赋值为1,并返回1(真);(b=1)同理。- 因此,这个表达式永远为真,但不能正确判断
a和b是否等于1。- 因此,选项 D 错误。
答案:
B
第 4 题 【 单选题 】
定义 char a[]="His name is Jack",请问 sizeof(a)的结果是( )。
A:14
B:15
C:16
D:17
解析:
- 在 C++ 中,字符串常量(如
"His name is Jack")是以字符数组的形式存储的。- 字符串的末尾会自动添加一个空字符(
\0)作为结束符。sizeof用于计算变量或类型所占用的内存大小(以字节为单位)。- 对于字符数组
char a[],sizeof(a)会返回整个数组的大小,包括空字符\0
