GESP 9月认证 C++ 三级真题
GESP 9月认证 C++ 三级真题
- 场次:2024年9月
- 满分:100 分
- 题目来源:官方直发原件
1 单选题(每题 2 分,共 30 分)
下列代码中,输出结果是( )
#include<iostream>
using namespace std;
int main()
{
double a=0.9;
double b=1.0;
if(((b-a)==0.1))
{
cout<<"Equal"<<endl;
}
else
{
cout<<"Not equal"<<endl;
}
}
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写措辞改写题干
原卷作
if(((b-a)==0.1))洛谷有题写成 if ((b - a) == 0.1),少一层括号并加了空格;官方 PDF 第 1 页为 if(((b-a)==0.1)),已按页面恢复。
已按官方原件恢复:现为原卷原文
关于计算机中的编码,下列说法中正确的是( )
8 进制数 3703 转换成 16 进制数是( )
0.8125 变成二进制是( )。
下面说法正确的是( )
下列说法正确的是( )
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写错字选项 4
原卷作
(~0的输出值是1)洛谷有题写成 (~0) 的输出值是 1(补了右括号并加空格);官方 PDF 第 2 页印作 (~0的输出值是1),已按原卷恢复。
已按官方原件恢复:现为原卷原文
下列代码实现的是( )
void Swap(int &a, int &b) {
if (a != b) {
a ^= b;
b ^= a;
a ^= b;
}
}
a & ~1 运算实现的是( )。
a=1010 1110,a << 2,下面关于这个说法正确的是( )。
下列程序中,result 和 result2 输出分别是( )
long a = 123;
int b = 1;
long result = a & b;
cout<<result<<endl;
long a2 = -123;
unsigned int b2 = -1;
long result2 = a2 & b2;
cout<<result2<<endl;
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写版式题干
原卷作
cout<<result<<endl;洛谷有题 cout 两侧加了空格;已按官方 PDF 第 3 页列位恢复为 cout<<result<<endl / cout<<result2<<endl。
已按官方原件恢复:现为原卷原文
陈A歹种植一批农作物,第一天需要浇水一次,随后的两天(第 2、第 3 天),每天需要浇水 2 次,再随后的 3 天(第 4、第 5、第 6 天),需要每天浇水 3 次,这样持续下去,随后的 n 天,每天需要浇水 n 次。请问在 100 天里,总共浇了多少次水( )
关于一维数组,下列程序能够正确执行的是( )。
A.
int a[10];
int sum=0;
for(int i=0;i<=10;i++) {
sum=sum+a[i];
}
B.
int a[10]={1,2,3,4,5,6,7,8,9,10};
int sum=0;
for(int i=0;i<=10;i++) {
sum=sum+a[i];
}
C.
int a[10]={1,2,3,4,5,6,7,8,9,10};
int sum=0;
for(int i=0;i<10;i++) {
um=sum+a[i];
}
D.
int a[10]={0};
int sum=0;
for(int i=0;i<=10;i++) {
sum=sum+a[i];
}
原文保真说明:原卷印刷错误 1 处、来源改写 1 处(照原卷保留,未作修改)
来源题面被改写版式题干
原卷作
um=sum+a[i];洛谷有题把四段代码收成外链截图;已按官方 PDF 第 3–4 页恢复为四个代码块。选项 C 第 4 行原卷印作 um=sum+a[i](少 s),照录。
已按官方原件恢复:现为原卷原文
原卷印刷如此错字题干 · 第 4 行
原卷作
um=sum+a[i];,常规写法应为sum=sum+a[i];原卷选项 C 第 4 行印作 um=sum+a[i],比 sum 少一个 s(图像与文本层一致),照原卷转写。
下面的程序中,会输出( )。
int a[10]={1,2,3,4,5,6,7,8,9,10};
cout<<a[10]<<endl;
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写版式题干
原卷作
int a[10]={1,2,3,4,5,6,7,8,9,10};洛谷有题数组初值与 cout 两侧加了空格;已按官方 PDF 第 4 页列位恢复。
已按官方原件恢复:现为原卷原文
有 A B C D 4 个人,其中一个是小偷,每个人说一句话,只有小偷说的是假话,其中 A 说:不是我。B 说:是 C。C 说:是 D。D 说:C 瞎说,请问谁是小偷( )。
下列程序输出的是( )
string str = "Hello,CHAD";
cout << str.find("A") << '\n';
2 判断题(每题 2 分,共 20 分)
判断题「√」表示正确,「×」表示错误
+1 和 −1 的原码进行 1+(−1) 计算的结果是 −2。( )
~1 的输出值是 −2。( )
~1 = 1111 1110。( )
取 X 的低四位,可以用 Y = 0000 1111,用 X & Y 获取 X 的低四位。( )
下列程序输出的是 A。( )
char x=65;
x++;
cout<<x++<<endl;
下列程序输出的是 3。( )
string str="CHADai";
size_t pos = str.find('D');
cout<<pos<<endl;
下列程序将输出 1。( )
int a[10]={1};
cout<<a[1]<<endl;
下列程序将输出 A。( )
int a=65;
cout<<(char)a<<endl;
16 进制数 AB,表示成 2 进制数是 10101011。( )
def(十六进制)=103231(五进制)。( )
3 编程题(每题 25 分,共 50 分)
平衡序列
C++时间 1 s内存 512 MB标准输入输出
小杨有一个包含 n 个正整数的序列 a。他认为一个序列是平衡的当且仅当存在一个正整数 i(1≤i<n)使得序列第 1 到第 i 个数字的总和等于第 i+1 到第 n 个数字的总和。
小杨想请你判断序列 a 是否是平衡的。
输入格式
本题单个测试点内包含多组测试数据。第一行是一个正整数 t,表示测试用例组数。
接下来是 t 组测试用例。对每组测试用例,一共两行。
第一行包含一个正整数 n,表示序列长度。
第二行包含 n 个正整数,代表序列 a。
输出格式
对每组测试用例输出一行一个字符串。如果 a 是平衡的,输出 Yes,否则输出 No。
样例
3 3 1 2 3 4 2 3 1 4 5 1 2 3 4 5
Yes Yes No
样例 1 解释
- 对第一组测试用例,令 i=2,有 1+2=3,因此序列是平衡的。
- 对第二组测试用例,令 i=2,有 2+3=1+4,因此序列是平衡的。
- 对第三组测试用例,不存在满足要求的 i。
数据规模与约定
对全部的测试数据,保证 1≤t≤100,1≤n,ai≤10000。
数据范围
对于全部数据,保证有 1≤t≤100,1≤n,ai≤10000。
你的代码(C++)
提交后由评测机编译运行,结果见下方76 B / 64 KB
判题结果
回文拼接
C++时间 1 s内存 512 MB标准输入输出
一个字符串是回文串,当且仅当该字符串从前往后读和从后往前读是一样的,例如,aabaa 和 ccddcc 都是回文串,但 abcd 不是。
小杨有 n 个仅包含小写字母的字符串,他想请你编写程序判断每个字符串是否由两个长度至少为 2 的回文串前后拼接而成。
输入格式
第一行包含一个正整数 n,代表字符串数量。
接下来 n 行,每行一个仅包含小写字母的字符串。
输出格式
对于每个字符串输出一行,如果该字符串由两个长度至少为 2 的回文串前后拼接而成则输出 Yes,否则输出 No。
样例
4 abcd aabbb aaac abcdd
No Yes No No
样例 1 解释
对于第 1,3,4 个字符串,都不是由两个长度至少为 2 的回文串前后拼接而成。
第 2 个字符串由回文串 aa 和 bbb 前后拼接而成,并且两个回文串长度都至少为 2。
数据规模与约定
对全部的测试数据,保证 1≤n≤10,且每个字符串的长度均不超过 100。
数据范围
对于全部数据,保证有 1≤n≤10,并且每个字符串的长度不超过 100。
你的代码(C++)
提交后由评测机编译运行,结果见下方76 B / 64 KB