2023年GESP12月认证C++七级试卷解析
一、单选题(每题2分,共30分)
题号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
答案 |
B |
D |
B |
C |
D |
D |
B |
C |
B |
C |
D |
C |
B |
D |
B |
1、定义变量double x,如果下⾯代码输⼊为100,输出最接近( )。
A. 0
B. -5
C. -8
D. 8
【答案】B
【解析】log10(x)表示10的多少次方是x,log2(x)表示2的多少次方是x,这里的x是输入的100,所以,log10(100)=2,又因为26=64,所以log2(100)是6.多,两者作差,约为-4.多,选B。
-
对于下⾯动态规划⽅法实现的函数, 以下选项中最适合表达其状态转移函数的为( )。
A.
B.
C.
D.
【答案】D
【解析】首先看代码,s数组是前缀和数组,f数组是dp数组,初始化f数组为正无穷,只有f[i][i]=0(1<=i<=n)的值为0,接着进行了区间dp,i和j分别是区间dp的两个端点,k是枚举的分界点,k的取值范围是[i,j),所以选项C错误,根据第15行转移方程,发现后面的s[j]-s[i-1]是a[i]+a[i+1]+…+a[j]的和,且与k无关,可以单独拎出来,所以转移方程为
,选项D正确。选项A,B的错误点在于f(i,j)的初始值为正无穷,所以f(i,j)是不参与转移方程的。
3、下⾯代码可以⽤来求最长上升⼦序列(LIS)的长度,如果输⼊是:5 1 7 3 5 9,则输出是( )。