GESP 2024年 9月认证 C++ 三级真题
|
8页
|
780人阅读
|
6人下载
内容正文:
题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
答案 B C A D C B C C A D D C D C B
C++ 三级
2024 年 09 ⽉
1 单选题(每题 2 分,共 30 分)
第 1 题 下列代码中,输出结果是( )
A. Equal
B. Not equal
C. 程序不能正确执行
D. 没有输出
第 2 题 关于计算机中的编码,下列说法中正确的是()
A. 机器数的形式值和真值是一致的
B. 原码就是符号位加上真值
C. 机器数是带符号的
D. [-1]=[1000 0001]原=[1111 1111]反
第 3 题 8进制数3703转换成16进制数是()
A. 7C3
#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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
B. 7A3
C. 7B3
D. 7D3
第 4 题 0.8125变成⼆进制是( )。
A. 0.1110
B. 0.1 1111 1011 1101
C. 0.1 1111 1011 1100
D. 0.1101
第 5 题 下⾯说法正确的是( )
A. (22&01)==(22&&01)成立
B. (23|11)==30
C. (23|10)==31
D. (23|01)==31
第 6 题 下列说法正确的是()
A. 2>>1和1>>1的值是一样的
B. (2>>2)和(1>>1)的值是一样的
C. (11^00)和(1^0)的值是一样的
D. (~0的输出值是1)
第 7 题 下列代码实现的是( )
A. a和b的异或
B. a和b的同或
C. a和b的值交换
D. a和b的高低位互换
第 8 题 a&~1运算实现的是( )。
A. 使a的最低位为1
B. 使a的最高位为1
void Swap(int &a, int &b) {
if (a != b) {
a ^= b;
b ^= a;
a ^= b;
}
}
1
2
3
4
5
6
7
C. 使a的最低位为0
D. 使a的最高位为0
第 9 题 a=1010 1110,a<<2,下面关于这个说法正确的是 ( )。
A. a的值变为1011 1000
B. a的值变为1011 1010
C. a的值变为0101 1101
D. a的值变为0101 1100
第 10 题 下列程序中,result和result2输出分别是 ( )
A. 123 -1
B. 123 -123
C. 1 -1
D. 1 -123
第 11 题 陈A歹种植一批农作物,第一天需要浇水一次,随后的两天(第2、第3天),每天需要浇水2次,再随后的
3天(第4、第5、第6天),需要每天浇水3次,这样持续下去,随后的n天,每天需要浇水n次。请问在100天里,总
共浇了多少次水( )
A. 994
B. 996
C. 995
D. 945
第 12 题 关于一维数组,下列程序能够正确执行的是( )。
A.
B.
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
2
3
4
5
6
7
8
9
int a[10];
int sum=0;
for(int i=0;i<=10;i++) {
sum=sum+a[i];
}
1
2
3
4
5
C.
D.
第 13 题 下⾯的程序中,会输出( )。
A. 1
B. 0
C. 10
D. 不确定的值
第 14 题 有ABCD4个⼈,其中⼀个是⼩偷,每个⼈说⼀句话,只有⼩偷说的是假话,其中A说:不是我。B说:是
C。C说:是D。D说:C瞎说,请问谁是⼩偷( )。
A. A
B. B
C. C
D. D
第 15 题 下列程序输出的是()
A. 9
B. 8
C. 7
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];
}
1
2
3
4
5
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];
}
1
2
3
4
5
int a[10]={0};
int sum=0;
for(int i=0;i<=10;i++) {
sum=sum+a[i];
}
1
2
3
4
5
int a[10]={1,2,3,4,5,6,7,8,9,10};
cout<<a[10]<<endl;
1
2
string str = "Hello,陈A歹";
cout << str.find("A") << '
';
1
2
题号 1 2 3 4 5 6 7 8 9 10
答案
D. 6
2 判断题(每题 2 分,共 20 分)
第 1 题 +1和-1的原码进行1+(-1)计算的结果是-2 。( )
第 2 题 ~1 的输出值是 -2 。( )
第 3 题 ~1 = 1111 1110 。( )
第 4 题 取 X 的低四位,可以⽤ Y = 0000 1111 ,⽤ X&Y 获取 X 的低四位。( )
第 5 题 下列程序输出的是 A 。( )
第 6 题 下列程序输出的是 3 。( )
第 7 题 下列程序将输出 1 。( )
第 8 题 下列程序将输出 A 。( )
第 9 题 16进制数 AB ,表⽰成2进制数是 10101011 。( )
第 10 题 def (⼗六进制) = 103231 (五进制)。( )
3 编程题(每题 25 分,共 50 分)
3.1 编程题 1
试题名称:平衡序列
时间限制:1.0 s
内存限制:512.0 MB
char x=65;
x++;
cout<<x++<<endl;
1
2
3
string str="陈ADai";
size_t pos = str.find('D');
cout<<pos<<endl;
1
2
3
int a[10]={1};
cout<<a[1]<<endl;
1
2
int a=65;
cout<<(char)a<<endl;
1
2
3.1.1 题面描述
⼩杨有⼀个包含 个正整数的序列 ,他认为⼀个序列是平衡的当且仅当存在⼀个正整数 ( )使得序列第
个到第 个数字的总和等于第 个到第 个数字的总和。
⼩杨想请你判断序列 是否是平衡的。
3.1.2 输入格式
第⼀⾏包含⼀个正整数 ,代表测试⽤例组数。
接下来是 组测试⽤例。对于每组测试⽤例,⼀共两⾏。
第⼀⾏包含⼀个正整数 ,代表序列长度。
第⼆⾏包含 个正整数,代表序列 。
3.1.3 输出格式
对于每组测试⽤例,如果序列 是否是平衡的,输出 Yes,否则输出 No。
3.1.4 样例1
对于第⼀组测试⽤例,令 ,则有 ,因此序列是平衡的;
对于第⼆组测试⽤例,令 ,则有 ,因此序列是平衡的;
对于第三组测试⽤例,不存在满⾜要求的 。
对于全部数据,保证有 。
3.1.5 参考程序
3
3
1 2 3
4
2 3 1 4
5
1 2 3 4 5
1
2
3
4
5
6
7
Yes
Yes
No
1
2
3
#include<bits/stdc++.h>
using namespace std;
int a[10010];
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
int sum=0;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
1
2
3
4
5
6
7
8
9
10
11
12
13
3.2 编程题 2
试题名称:回⽂拼接
时间限制:1.0 s
内存限制:512.0 MB
3.2.1 题面描述
⼀个字符串是回⽂串,当且仅当该字符串从前往后读和从后往前读是⼀样的,例如, 和 都是回⽂串,
但 不是。
⼩杨有 个仅包含⼩写字母的字符串,他想请你编写程序判断每个字符串是否由两个长度⾄少为 的回⽂串前后拼
接⽽成。
3.2.2 输入格式
第⼀⾏包含⼀个正整数 ,代表字符串数量。
之后 ⾏每⾏⼀个仅包含⼩写字母的字符串。
3.2.3 输出格式
对于每个字符串输出⼀⾏,如果该字符串由两个长度⾄少为 的回⽂串前后拼接⽽成则输出 Yes,否则输出 No。
3.2.4 样例1
对于第 个字符串,都不是由两个长度⾄少为 的回⽂串前后拼接⽽成。
第 个字符串由回⽂串 和 前后拼接⽽成,并且两个回⽂串长度都⾄少为 。
}
int tot=0,fl=0;
for(int i=1;i<n;i++){
tot+=a[i];
if(tot*2==sum){
fl=1;
break;
}
}
if(fl)cout<<"Yes
";
else cout<<"No
";
}
}
14
15
16
17
18
19
20
21
22
23
24
25
26
4
abcd
aabbb
aaac
abcdd
1
2
3
4
5
No
Yes
No
No
1
2
3
4
对于全部数据,保证有 ,并且每个字符串的长度不超过 。
3.2.5 参考程序
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,k;
cin>>n;
for(int i=1;i<=n;i++){
string s;
cin>>s;
int m = s.length();
int fl = 0;
for(int j=2;j<=m-2;j++){
string s1=s.substr(0,j);
string s2=s.substr(j,m-j+1);
string t1="",t2="";
for(int k=(int)s1.size()-1;k>=0;k--)t1+=s1[k];
for(int k=(int)s2.size()-1;k>=0;k--)t2+=s2[k];
if(t1==s1&&t2==s2){
fl=1;
break;
}
}
if(fl)cout<<"Yes
";
else cout<<"No
";
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
资源预览图