GESP202503C++四级
1.
第
1
题
关于下述代码,说法错误的是( )。
int
multiply
(
int
x
,
int
y
);
int
main
() {
int
a
=
4
;
int
b
=
5
;
int
result
=
multiply
(
a
,
b
);
std::cout
<<
"The result is: "
<<
result
<<
std::endl
;
return
0
;
}
int
multiply
(
int
x
,
int
y
) {
return
x
*
y
;
}
A. 函数 multiply 的定义应该放到函数 main 之前。
B. 函数声明 int multiply(int x, int y); 中明确指定了函数 multiply() 的返回值为整数类型。
C. 在 main 函数中,函数 multiply 通过 multiply(a, b) 被调用,其中 a 和 b 是定义在 main 函数中的变 量,它们作为实参传递给了 multiply 函数的形参 x 和 y 。
D. 运行上述代码,将输出 The result is: 20 。
2.
第
2
题
执行下述代码将输出( )。
int
x
=
10
;
void
func
() {
int
x
=
20
;
std::cout
<<
x
; }
int
main
() {
func
();
std::cout
<<
x
;
return
0
;
}
2020
2010
2000
编译错误
3.
第
3
题
执行下述代码后,变量
a
的值为( )。
int
a
=
10
;
int*
p
= &
a
;
*
p
=
20;
10
20
随机值
编译错误
4.
第
4
题
以下哪种参数传递方式可以避免拷贝大型对象?
A. 只能用值传递
B. 只能用引用传递
C. 只能用指针传递
D. 引用传递和指针传递均可
5.
第
5
题
执行下述代码,将输出( )。
void
swap
(
int
a
,
int
&
b
) {
int
temp
=
a
;
a
=
b
;
b
=
temp
;
}
int
main
() {
int
x
=
1
,
y
=
2
;
swap
(
x
,
y
);
std::cout
<<
x
<<
y
;
return
0
;
}
12
21
22
11
6.
第
6
题
下面的描述中,( )正确定义一个名为
Person
的结构体并正确初始化了一个
Person
结构体的变量
p
。
A
B
C
D
7.
第
7
题
给定如下代码,
struct
Person
{
std::string name
;
int
age
;
struct
Address
{
std::string street
;
std::string city
;
};
Address address
;
};
下面描述错误的是( )。
A. 结构 Person 内嵌套结构 Address
B. Person 有一个 Address 类型的 address 成员
C. 一个 Person 类型的变量 p 的 address 的初始化可以写成: p.address.street = "123 Main St"; p.address.city = "Anytown";
D. 结构的嵌套可以减少命名冲突,因此可以不必控制嵌套层次
8.
第
8
题
假设
int arr[2][3] = {{1,2,3},{4,5,6}};
,则
arr[1][2]
的值是( )。
2
3
5
6
9.
第
9
题
下面( )正确定义了二维数组
A. int arr[3,4];
B. int arr[3][4];
C. int arr(3,4);
D. int a[3-4];
10.
第
10
题
小杨正在爬楼梯,需要爬 阶才能到达楼顶。如果每次可以爬 个或 个台阶,下面代码采用递推算法来计算
一共有多少种不同的方法可以爬到楼顶,则横线上应填写( )。
int
f
(
int
n
) {
if
(
n
==
1
||
n
==
2
)
return
n
;
int
f1
=
1
;
int
f2
=
2
;
int
res
=
0
;
for
(
int
i
=
3
;
i
<=
n
;
i
++
) {
________________________________
//
在此处填入代码
}
return
res
;
}
A
B
C
D
11.
第
11
题
给定如下算法,其时间复杂度为( )。
bool
f
(
int
arr
[],
int
n
,
int
target
) {
for
(
int
i
=
0
;
i
<
(
1
<<
n
);
i
++
) {
int
sum
=
0
;
for
(
int
j
=
0
;
j
<
n
;
j
++
) {
if
(
i
&
(
1
<<
j
)) {
sum
+=
arr
[
j
];
}
}
if
(
sum
==
target
)
return
true
;
}
return
false
;
}
A
B
C
D
12.
第
12
题
下面关于排序稳定性的描述,正确的是( )。
A. 稳定性指算法的时间复杂度恒定
B. 稳定排序保证相同元素的相对顺序不变
C. 选择排序是稳定排序
D. 插入排序不是稳定排序
13.
第
13
题
对数组
arr[]={5, 3, 8, 1}
进行升序排序,执行第一轮冒泡排序后数组
arr
中的内容为( )。
A. 3, 5, 1, 8
B. 3, 1, 5, 8
C. 3, 5, 8, 1
D. 5, 3, 8, 1
14.
第
14
题
运行下面的代码,将出现( )。
double
hmean
(
double
a
,
double
b
) {
if
(
a
== -
b
)
throw
runtime_error
(
"Runtime error occurred."
);
return
2.0
*
a
*
b
/
(
a
+
b
);
}
int
main
() {
double
x
=
10
;
double
y
= -
10
;
try
{
int
result
=
hmean
(
x
,
y
);
cout
<<
"hmean: "
<<
result
<<
endl
;
}
catch
(
const
runtime_error
&
e
) {
cout
<<
"Caught: "
<<
e
.
what
()
<<
endl
;
}
catch
(...) {
cout
<<
"Caught an unknown exception."
<<
endl
;
}
return
0
;
}
A. 屏幕上输出 Caught: Runtime error occurred.
B. 屏幕上输出 Caught an unknown exception.
C. 程序调用 std::terminate()
D. 编译错误
15.
第
15
题
下面哪种方式不能实现将字符串
"Happy Spring!"
输出重定向到文件
log.txt
( )
A
B
C
D
16.
第
1
题
函数是
C++
中的核心概念,用于封装可重用的代码块。
对
错
17.
第
2
题
在
C++
中,函数的返回类型可以省略,默认为
int
。
对
错
18.
第
3
题
结构体的成员默认是
public
访问权限。
对
错
19.
第
4
题
假设整数数组
arr[4]= {0, 1, 2, 3};
的第一个元素在内存中的地址为
0x7ffee4065820
,
经过
int* p
= arr; p += 1;
后,指针
p
的值是
1
。
对
错
20.
第
5
题
二维数组作为函数参数时,必须显式指定所有维度的大小。
对
错
21.
第
6
题
递推是一种通过已知的初始值和递推公式,逐步求解目标值的算法。
对
错
22.
对
错
23.
对
错
24.
第
9
题
对数组
arr[]={4, 3, 1, 5, 2}
进行升序排序,执行第一轮选择排序后数组
arr
中的内容是
{1, 4, 3, 5,
2}
。
对
错
25.
第
10
题
未捕获异常会调用
std::terminate
终止程序。
对
错
26. 虎牙OJ搜索“荒地开垦”25分
27. 虎牙OJ搜索“二阶矩阵”25分
关闭
更多问卷
复制此问卷