万卷网> GESP认证 >C++ > 2024年9月CCF—GESP(C++三级)编程能力等级认证试卷

2024年9月CCF—GESP(C++三级)编程能力等级认证试卷
三级 2024 2025-05-18 12:12:32 103

一、单选题

1.

关于计算机中的编码,下列说法中正确的是()

A.

机器数的形式值和真值是一致的

B.

原码就是符号位加上真值

C.

机器数是带符号的

D.

[-1]=[1000 0001]原=[1111 1111]反

2.

下面的程序中,会输出( )。

int a[10]={1,2,3,4,5,6,7,8,9,10};
cout<<a[10]<<endl;
A.

1

B.

0

C.

10

D.

不确定的值

3.

下列说法正确的是()

A.

2>>1和1>>1的值是一样的

B.

(2>>2)和(1>>1)的值是一样的

C.

(1100)和(10)的值是一样的

D.

(~0的输出值是1)

4.

下列程序输出的是()

string str = "Hello,陈A歹";
cout << str.find("A") << '\n';
A.

9

B.

8

C.

7

D.

6

5.

a=1010 1110,a<<2,下面关于这个说法正确的是 ( )。

A.

a的值变为1011 1000

B.

a的值变为1011 1010

C.

a的值变为0101 1101

D.

a的值变为0101 1100

6.

陈A歹种植一批农作物,第一天需要浇水一次,随后的两天(第2、第3天),每天需要浇水2次,再随后的3天(第4、第5、第6天),需要每天浇水3次,这样持续下去,随后的n天,每天需要浇水n次。请问在100天里,总共浇了多少次水( )

A.

994

B.

996

C.

995

D.

945

7.

8进制数3703转换成16进制数是()

A.

7C3

B.

7A3

C.

7B3

D.

7D3

8.

下列代码中,输出结果是( )

#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;
	}
}
A.

Equal

B.

Not equal

C.

程序不能正确执行

D.

没有输出

9.

下列程序中,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;
A.

123 -1

B.

123 -123

C.

1 -1

D.

1 -123

10.

关于一维数组,下列程序能够正确执行的是( )。

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];
}
11.

有ABCD4个人,其中一个是小偷,每个人说一句话,只有小偷说的是假话,其中A说:不是我。B说:是C。C说:是D。D说:C瞎说,请问谁是小偷( )。


A.

A

B.

B

C.

C

D.

D

12.

0.8125变成二进制是( )。

A.

0.1110

B.

0.1 1111 1011 1101

C.

0.1 1111 1011 1100

D.

0.1101

13.

下面说法正确的是( )

A.

(22&01)==(22&&01)成立

B.

(23|11)==30

C.

(23|10)==31

D.

(23|01)==31

14.

a&~1运算实现的是( )。

A.

使a的最低位为1

B.

使a的最高位为1

C.

使a的最低位为0

D.

使a的最高位为0

15.

下列代码实现的是( )

void Swap(int &a, int &b) {
	if (a != b) {
		a ^= b;
		b ^= a;
		a ^= b;
	}
}
A.

a和b的异或

B.

a和b的同或

C.

a和b的值交换

D.

a和b的高低位互换

二、判断题

1.

取 X 的低四位,可以用 Y = 0000 1111 ,用 X&Y 获取 X 的低四位。( )

A.正确 B.错误
2.

+1和-1的原码进行1+(-1)计算的结果是-2 。( )

A.正确 B.错误
3.

下列程序将输出 1 。( )

int a[10]={1};
cout<<a[1]<<endl;
A.正确 B.错误
4.

16进制数 AB ,表示成2进制数是 10101011 。( )

A.正确 B.错误
5.

下列程序输出的是 3 。( )

string str="陈ADai";
size_t pos = str.find('D');
cout<<pos<<endl;
A.正确 B.错误
6.

~1 = 1111 1110 。( )

A.正确 B.错误
7.

下列程序输出的是 A 。( )

char x=65;
x++;
cout<<x++<<endl;
A.正确 B.错误
8.

下列程序将输出 A 。( )

int a=65;
cout<<(char)a<<endl;
A.正确 B.错误
9.

def (十六进制) = 103231 (五进制)。( )

A.正确 B.错误
10.

~1 的输出值是 -2 。( )

A.正确 B.错误

三、编程题

1.

回文拼接

时间限制:1.0 s

内存限制:512.0 MB

题面描述

一个字符串是回文串,当且仅当该字符串从前往后读和从后往前读是一样的,例如,aabaa 和 ccddcc 都是回文串,但 abcd 不是。

小杨有 n 个仅包含小写字母的字符串,他想请你编写程序判断每个字符串是否由两个长度至少为 2 的回文串前后拼接而成。

输入格式

第一行包含一个正整数 n ,代表字符串数量。

之后 n nn 行每行一个仅包含小写字母的字符串。

输出格式

对于每个字符串输出一行,如果该字符串由两个长度至少为 2 的回文串前后拼接而成则输出 Yes,否则输出 No。


输入样例

4
abcd
aabbb
aaac
abcdd

输入样例

No
Yes
No
No

对于第 1,3,4 个字符串,都不是由两个长度至少为 2 的回文串前后拼接而成。

第 2 个字符串由回文串 aa 和 bbb 前后拼接而成,并且两个回文串长度都至少为 2 。

对于全部数据,保证有 1≤n≤10,并且每个字符串的长度不超过 100。

2.

平衡序列

时间限制:1.0 s

内存限制:512.0 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


对于第一组测试用例,令 i=2,则有 1+2=3,因此序列是平衡的;

对于第二组测试用例,令 i=2,则有 2+3=1+4,因此序列是平衡的;

对于第三组测试用例,不存在满足要求的i。

对于全部数据,保证有 1≤t≤100,1≤n,ai≤10000。

公众号
客服 反馈
顶部