第 13 届蓝桥杯 C++ 青少组省赛中 / 高级组 2022 年真题(选择题)
第 1 题
题目:已知char a; float b; double c;
,执行语句c = a + b + c;
后变量c
的类型是( )。
A. char B. float C. double D. int
答案:C
解题思路:
1.因为在 C++ 中,表达式运算会进行类型提升,所以a(char)+b(float)char变为float类型
2.float再与c(double)相加,float变为double类型,所以最后c的类型为double
注:不同类型运算时,低精度类型向高精度类型提升(char→int→float→double)
第 2 题
题目:以下对main
函数描述正确的是( )。
A. main
函数必须写在所有函数的前面
B. main
函数必须写在所有函数的后面
C. main
函数可以写在任何位置,但不能放到其他函数里
D. main
函数必须写在固定位置
答案:C
解题思路:
1.C++ 中,main
函数是程序的入口,但没有规定其必须位于代码的特定位置。
2.main函数它可以写在其他函数之前或之后,但不能被其他函数包含(即不能在某个函数内部定义main
),所以选项 A、B、D 均错误,C 正确
第 3 题
题目:二进制数1101111
转换为十六进制是( )。
A. 157 B. 111 C. 6f D. 3f
答案:C
解题思路:
二进制转十六进制需从右到左每 4 位分组(不足补前导 0):
1.1101111
→ 补前导 0 为0110 1111
2.0110转成十进制为6,对应十六进制的6
3.1111转换成十进制为15,对应十六进制的f(10 A,11 B,12 C,13 D,14 E,15 F)
4.得出结果6f
第 4 题
题目:下列函数中哪一个不能重载( )。
A. 构造函数 B. 析构函数 C. 成员函数 D. 非成员函数
答案:B
解题思路:
函数重载要求函数名相同,参数列表不同
1.析构函数的名称固定为~类名()
,且没有参数,无法通过参数列表区分,因此不能重载
2.构造函数可以重载(不同参数列表),成员函数和非成员函数也可以重载
第 5 题
题目:下列指针的用法中哪一个不正确( )。
A. int i; int *p = &i;
B. int i; int *p; i = *p;
C. int *p; p = 0;
D. int i = 5; int *p; p = &i;
答案:B
解题思路:
1.选项 A:正确,指针p
指向变量i
的地址。
2.选项 B:错误,指针p
未初始化(未指向有效地址),解引用*p
会导致未定义行为(野指针)。
3.选项 C:正确,p = 0
等价于p = nullptr
,表示空指针。
4.选项 D:正确,指针p
指向变量i
的地址。
int *p;是创建一个整数型指针变量p
p=0;是将p初始化
&i是变量i在内存中的地址