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

2024年6月CCF—GESP(C++二级)编程能力等级认证试卷
二级 2024 2025-05-14 14:58:26 79

一、单选题

1.

在C++中, cout << (5 % 2 && 5 % 3) 的输出是( )。

A.

1

B.

2

C.

true

D.

false

2.

在下面的C++代码中,N必须是小于10大于1的整数,M为正整数(大于0)。如果M被N整除则M为幸运数,如果M中含有N且能被N整除,则为超级幸运数,否则不是幸运数。程序用于判断M是否为幸运数或超级幸运数或非幸运数。阅读下面代码,有关说法正确的是( )。

int N, M;
cout << "请输入幸运数字:";
cin >> N;
cout << "请输入正整数:";
cin >> M;

bool Lucky;
if (M % N == 0)
	Lucky = true;
else
	Lucky = false;
while (M){
	if (M % 10 == N && Lucky){
		printf("%d是%d的超级幸运数!", M, N);
		break;
	}
	M /= 10;
}
if (M == 0)
	if (Lucky)
		printf("%d是%d的幸运数!", M, N);
	else
		printf("%d非%d的幸运数!", M, N);
A.

如果N输入3,M输入36则将输出:36是3的超级幸运数!

B.

如果N输入7,M输入21则将输出:21是7的幸运数!

C.

如果N输入8,M输入36则将输出:36非8的超级幸运数!

D.

如果N输入3,M输入63则将输出:63是3的超级幸运数!

3.

在C++中,下列不可做变量的是( )。(2024.6-2)

A.

five-Star

B.

five_star

C.

fiveStar

D.

_fiveStar

4.

下面C++代码执行后的输出是( )。

int loopCount = 0;
for (int i=0; i < 10; i++)
	for (int j=1; j < i; j++)
		loopCount += 1;
cout << loopCount;
A.

55

B.

45

C.

36

D.

28

5.

小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?( )(2024.6-2)

A.

1

B.

2

C.

3

D.

4

6.

假设下面C++代码执行过程中仅输入正负整数或0,有关说法错误的是( )。

int N,Sum = 0;
cin >> N;
while (N){
	Sum += N;
	cin >> N;
}
cout << Sum;
A.

执行上面代码如果输入0,将终止循环

B.

执行上面代码能实现所有非0整数的求和

C.

执行上面代码第一次输入0,最后将输出0

D.

执行上面代码将陷入死循环,可将 while (N) 改为 while (N==0)

7.

某货币由5元,2元和1元组成。输入金额(假设为正整数),计算出最少数量。为实现其功能,横线处应填入代码是( )。

int N;
cin >>N;

int M5,M2,M1;
M5 = N / 5;
M2 = ______________;
M1 = ______________;
printf("5*%d+2*%d+1*%d", M5, M2, M1);
A.

第1横线处应填入:N / 2

第2横线处应填入:N - M5 - M2

B.

第1横线处应填入:(N - M5 * 5) / 2

第2横线处应填入:N - M5 * 5 - M2 * 2

C.

第1横线处应填入:N - M5 * 5 / 2

第2横线处应填入:N - M5 * 5 - M2 * 2

D.

第1横线处应填入:(N - M5 * 5) / 2

第2横线处应填入:N - M5 - M2

8.

执行下面的C++代码,有关说法正确的是( )【质数是指仅能被1和它本身整除的正整数】。

int N;
cin >> N;
bool Flag = true;
for ( int i = 2; i < N; i++){
	if (i * i > N)
		break;
	if (N % i == 0){
		Flag = false;
		break;
	}
}
if (Flag)
	cout << N << "是质数" << endl;
else
	cout << N << "不是质数" << endl;
A.

如果输入正整数,上面代码能正确判断N是否为质数

B.

如果输入整数,上面代码能正确判断N是否为质数

C.

如果输入大于等于0的整数,上面代码能正确判断N是否质数

D.

如将 Flag = true 修改为 Flag = N>=2? true:false 则能判断所有整数包括负整数、0、正整数是否为质数

9.

执行下面C++代码后,有关说法错误的是( )。

int a, b;
cin >> a >> b;
if (a && b)
	cout << "1";
else if (!(a || b))
	cout << "2";
else if (a || b)
	cout << "3";
else
	cout << "4";
A.

如果先后输入1和1,则将输出1

B.

如果先后输入0和1或者1和0,则将输出3

C.

如果先后输入0和0,则将输出2

D.

如果先后输入0和0,则将输出4

10.

下面C++代码用于实现如下图所示的效果,其有关说法正确的是( )。

for (int i = 1; i < 6; i++){ // L1
	for (int j = 1; j < i+1; j++) //L2
		cout << i*j << " ";
	cout << endl;
}
A.

当前代码能实现预期效果,无需调整代码

B.

如果 cout << endl; 移到循环L2内部,则可实现预期效果

C.

如果 cout << endl; 移到循环L1外部,则可实现预期效果

D.

删除 cout << endl; 行,则可实现预期效果

11.

下面C++代码执行后,输出是( )。

int cnt1 = 0, cnt2 = 0;
for (int i = 0; i < 10; i++){
	if (i % 2 == 0)
		continue;
	if (i % 2)
		cnt1 += 1;
	else if (i % 3 == 0)
		cnt2 += 1;
}
cout << cnt1 << " " << cnt2;
A.

5 2

B.

5 0

C.

0 2

D.

0 0

12.

下面C++代码执行后的输出是( )。

int loopCount = 0;
for (int i=0; i < 10; i++){
	for (int j=0; j < i; j++)
		if (i * j % 2)
			break;
	loopCount += 1;
}
cout << loopCount;
A.

25

B.

16

C.

10

D.

9

13.

在C++中,与 for(int i=0; i<10; i++) 效果相同的是( )。

A.

for(int i=0; i<10; i+=1)

B.

for(int i=1; i<=10; i++)

C.

for(int i=10; i>0; i–)

D.

for(int i=10; i<1; i++)

14.

执行下面的C++代码时输入 1 ,则输出是( )。

int month;
cin >> month;
switch(month){
	case 1:
		cout << "Jan ";
	case 3:
		cout << "Mar ";
		break;
	default:
		;
}
A.

Jan

B.

Mar

C.

Jan Mar

D.

以上均不对

15.

下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 ,则图中菱形框中应该填入( )。(2024.6-2)

A.

(yr%400==0) || (yr%4==0)

B.

(yr%400==0) || (yr%4==0 && yr%100!=0)

C.

(yr%400==0) && (yr%4==0)

D.

(yr%400==0) && (yr%4==0 && yr%100!=0)

二、判断题

1.

C++表达式 int(12.56) 的值为13。( )

A.正确 B.错误
2.

执行C++代码 cout << ‘9’+‘1’; 的输出为10。( )

A.正确 B.错误
3.

下面C++代码执行后,将输出5。( )

int cnt = 0;
for (int i = 1; i < 5; i++)
	for (int j = i; j < 5; j +=i)
		if (i * j % 2 == 0)
			cnt += 1;
cout << cnt;
A.正确 B.错误
4.

在C++代码中,不可以将变量命名为scanf,因为scanf是C++语言的关键字。( )

A.正确 B.错误
5.

下面C++代码执行后将导致死循环。( )

for (int i = 0; i < 10; i++)
	continue;
A.正确 B.错误
6.

C++表达式 -12 % 10 的值为2。( )

A.正确 B.错误
7.

C++的整型变量N被赋值为10,则语句 cout << N / 3 << “-” << N % 3 执行后输出是3-1。 ( )

A.正确 B.错误
8.

下面C++代码执行后将输出10。( )

int cnt = 0;
for (int i = 0; i < 10; i++)
	for (int j = 0; j < i; j++){
		cnt += 1;
		break;
	}
cout << cnt;
A.正确 B.错误
9.

GESP测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。( )2024.6-2

A.正确 B.错误
10.

下面C++代码能实现正整数各位数字之和。( )

int N,Sum = 0;
cin >> N;
while (N){
	Sum += N % 10;
	N /= 10;
}
cout << Sum;
A.正确 B.错误

三、编程题

1.

计数

时间限制:1.0 s

内存限制:512.0 MB

题面描述

小杨认为自己的幸运数是正整数k(注:保证1≤k≤9)。小杨想知道,对于从1到n的所有正整数中,k出现了多少次。

输入格式

第一行包含一个正整数n。

第二行包含一个正整数k。

输出格式

输出从1到n的所有正整数中,k出现的次数。


输入样例

25
2

输出样例

9

样例解释

从1到25中,2出现的正整数有2,12,20,21,22,23,24,25,一共出现了9次。

数据范围

对于全部数据,保证有1≤n≤1000,1≤k≤9。

2.

平方之和

时间限制:1.0 s

内存限制:512.0 MB

题面描述

小杨有n个正整数a1,a2,...,an,他想知道对于所有的i(1≤i≤n),是否存在两个正整数x 和y满足x×x+y×y=ai。

输入格式

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

之后n行,每行包含一个正整数,代表ai。

输出格式

对于每个正整数ai,如果存在两个正整数x和y满足x×x+y×y=ai,输出 Yes,否则输出 No。


输入样例

2
5
4

输出样例

Yes
No

样例解释

对于第一个正整数,存在1×1+2×2=5,因此答案为 Yes。

数据范围

对于全部数据,保证有1≤n≤10,1≤ai≤106。

公众号
客服 反馈
顶部