第15届 蓝桥杯 C++编程青少组中级省赛 202408 真题答案及解析
第 1 题 【 单选题 】
定义 char a[]="hello\nworld",执行 cout<<a,输出结果是( )
A:helloworld
B:
hello
world
C:hellonworld
D:hello\nworld
解析:
转义字符的作用
\n
是换行符,会被编译器解析为换行操作,而非直接输出字符\n
。输出逻辑
当执行cout << a
时,程序会:
- 先输出
hello
- 遇到
\n
后换行(光标移动到下一行行首)- 接着输出
world
答案:
B
第 2 题 【 单选题 】
(11001010)₂+(F8)₁₆ 的结果是( )。
A:(111000011)₂
B:(701)₈
C:(1C2)₁₆
D:(452)₁₀
解析:
转换为十进制相加
- 二进制
11001010₂
→ 128 + 64 + 8 + 2 = 202₁₀- 十六进制
F8₁₆
→ 15×16 + 8 = 248₁₀- 和为:202 + 248 = 450₁₀
验证选项
- A:
111000011₂
→ 256 + 128 + 64 + 2 + 1 = 451₁₀ ❌- B:
701₈
→ 7×64 + 1 = 449₁₀ ❌- C:
1C2₁₆
→ 1×256 + 12×16 + 2 = 450₁₀ ✅- D:
452₁₀
→ 直接数值不匹配 ❌
答案:
C
第 3 题 【 单选题 】
表达式 4%12 的结果是( )。
A:0
B:4
C:3
D:12
解析:
表达式
4 % 12
表示 4 除以 12 的余数。
由于 4 小于 12,无法整除,因此余数就是 4 本身。
答案:
B
第 4 题 【 单选题 】
下列选项中,逻辑表达式的值始终与 B 的真假无关的是( )。
A:( !A || B ) && A
B:(A || B) && (A && B)
C: (A && !A) || B
D:(A || B) && (A || !B)
解析:
要找出一个逻辑表达式,其值始终与 B 无关(即无论 B 为
true
或false
,结果仅由其他变量决定),需逐一分析选项:选项 A:
( !A || B ) && A
- 展开为
(!A && A) || (B && A)
!A && A
恒为假,表达式简化为B && A
- 结果依赖 B,与 B 有关。❌
选项 B:
(A || B) && (A && B)
- 展开为
(A && A && B) || (B && A && B)
- 化简为
A && B
- 结果依赖 B,与 B 有关。❌
选项 C:
(A && !A) || B
A && !A
恒为假,表达式简化为B
- 结果等于 B,与 B 直接相关。❌
选项 D:
(A || B) && (A || !B)
- 使用分配律:
A || (B && !B)
B && !B
恒为假,表达式简化为A || false
,即A
- 结果仅由 A 决定,与 B 无关。✅
答案:
D
第 5 题 【 单选题 】
运行下面程序,输出结果是( )
#include <bits/stdc++.h>
using namespace std;
int a[6]={16,8,32,10,9,21};
int func(int L,int R,int d)
{
if(L>R) return 0;
int sum=0,m=a[L],index=L;
for(int i=L+1;i<=R;i++){
if(m<a[i]){
m=a[i];index=i;
}
}
int lt=func(L,index-1,d+1);
int rt=func(index+1,R,d+1);
return lt+rt+m*d;
}