2024年6月 GESP C++ 2级认证考试真题(含编程操作题部分)
选 单选题(共 15 题,每题 2 分)
小杨父母带他到某培训机构给他报名参加 CCF 组织的 GESP 认证考试的第 1 级,那他可以选择的认证语言有几种?( )
下面流程图在 $yr$ 输入 $2024$ 时,可以判定 $yr$ 代表闰年,并输出 $2$ 月是 $29$ 天,则图中菱形框中应该填入( )。
在 C++ 中,下列不可做变量的是( )。
在 C++ 中,与 for(int i=0; i<10; i++) 效果相同的是( )。
在 C++ 中,cout << (5 % 2 && 5 % 3) 的输出是( )。
- 执行下面的 C++ 代码时输入 $1$,则输出是( )。
int month;
cin >> month;
switch(month){
case 1:
cout << "Jan ";
case 3:
cout << "Mar ";
break;
default:
;
}
执行下面 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";
某货币由 $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);
下面 C++ 代码执行后的输出是( )。
int loopCount = 0;
for (int i = 0; i < 10; i++)
for (int j = 1; j < i; j++)
loopCount += 1;
cout << loopCount;
下面 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;
假设下面 C++ 代码执行过程中仅输入正负整数或 $0$,有关说法错误的是( )。
int N, Sum = 0;
cin >> N;
while (N) {
Sum += N;
cin >> N;
}
cout << Sum;
执行下面的 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;
下面 C++ 代码用于实现如下图所示的效果,其有关说法正确的是( )。
for (int i = 1; i < 6; i++){ // L1
for (int j = 1; j < i+1; j++) //L2
cout << i*j << " ";
cout << endl;
}
下面 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;
在下面的 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);
判 判断题(共 10 题,每题 2 分)
执行 C++ 代码 cout << '9' + '1'; 的输出为 $10$。( )
C++ 表达式 -12 % 10 的值为 $2$。( )
C++ 表达式 int(12.56) 的值为 $13$。( )
C++ 的整型变量 $N$ 被赋值为 $10$,则语句 cout << N / 3 << "-" << N % 3 执行后输出是 3-1。 ( )
在 C++ 代码中,不可以将变量命名为 scanf,因为 scanf 是 C++ 语言的关键字。( )
下面 C++ 代码执行后将导致死循环。( )
for (int i = 0; i < 10; i++)
continue;
下面 C++ 代码执行后将输出 $10$。( )
int cnt = 0;
for (int i = 0; i < 10; i++)
for (int j = 0; j < i; j++){
cnt += 1;
break;
}
cout << cnt;
下面 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;
下面 C++ 代码能实现正整数各位数字之和。( )
int N, Sum = 0;
cin >> N;
while (N) {
Sum += N % 10;
N /= 10;
}
cout << Sum;
GESP 测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。( )
编 编程操作题(共 2 题,共 50 分)
试题名称:平方之和
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨有 $n$ 个正整数 $a_1,a_2,\dots,a_n$,他想知道对于所有的 $i (1\le i\le n)$,是否存在两个正整数 $x$ 和 $y$ 满足 $x\times x+y \times y=a_i$。
输入格式
第一行包含一个正整数 $n$,代表正整数数量。
之后 $n$ 行,每行包含一个正整数,代表 $a_i$。
输出格式
对于每个正整数 $a_i$,如果存在两个正整数 $x$ 和 $y$ 满足 $x\times x+y \times y=a_i$,输出 Yes,否则输出 No。
样例输入 #1
2
5
4
样例输出 #1
Yes
No
说明/提示
对于第一个正整数,存在 $1\times 1+2 \times 2=5$,因此答案为 Yes。
对于全部数据,保证有 $1 \le n \le 10,1 \le a_i \le 10^6$。
试题名称:计数
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨认为自己的幸运数是正整数 $k$(注:保证 $1 \le k\le 9$)。小杨想知道,对于从 $1$ 到 $n$ 的所有正整数中, $k$ 出现了多少次。
输入格式
第一行包含一个正整数 $n$。
第二行包含一个正整数 $k$。
输出格式
输出从 $1$ 到 $n$ 的所有正整数中, $k$ 出现的次数。
样例输入 #1
25
2
样例输出 #1
9
说明/提示
从 $1$ 到 $25$ 中,$2$ 出现的正整数有 $2,12,20,21,22,23,24,25$ ,一共出现了 $9$ 次。
对于全部数据,保证有 $1 \le n\le 1000,1 \le k\le 9$。