2024年6月 GESP C++ 2级
2024年6月 GESP C++ 2级认证考试真题(含编程操作题部分)
// questions
题目预览
小杨父母带他到某培训机构给他报名参加 CCF 组织的 GESP 认证考试的第 1 级,那他可以选择的认证语言有几种?( )
111
222
333
444
下面流程图在 yryryr 输入 202420242024 时,可以判定 yryryr 代表闰年,并输出 222 月是 292929 天,则图中菱形框中应该填入( )。
(yr%400==0) || (yr%4==0)
(yr%400==0) || (yr%4==0 && yr%100!=0)
(yr%400==0) && (yr%4==0)
(yr%400==0) && (yr%4==0 && yr%100!=0)
在 C++ 中,下列不可做变量的是( )。
five-Star
five_star
fiveStar
_fiveStar
在 C++ 中,与 for(int i=0; i<10; i++) 效果相同的是( )。
for(int i=0; i<10; i+=1)
for(int i=1; i<=10; i++)
for(int i=10; i>0; i--)
for(int i=10; i<1; i++)
在 C++ 中,cout << (5 % 2 && 5 % 3) 的输出是( )。
111
222
true
false
- 执行下面的 C++ 代码时输入 111,则输出是( )。
int month;
cin >> month;
switch(month){
case 1:
cout << "Jan ";
case 3:
cout << "Mar ";
break;
default:
;
}
Jan
Mar
Jan Mar
以上均不对
执行下面 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";
如果先后输入 111 和 111,则将输出 111
如果先后输入 000 和 111 或者 111 和 000,则将输出 333
如果先后输入 000 和 000,则将输出 222
如果先后输入 000 和 000,则将输出 444
某货币由 555 元,222 元和 111 元组成。输入金额(假设为正整数),计算出最少数量。为实现其功能,横线处应填入代码是( )。
int N;
cin >> N;
int M5, M2, M1;
M5 = N / 5;
M2 = ______________;
M1 = ______________;
printf("5*%d+2*%d+1*%d", M5, M2, M1);
第 1 横线处应填入:N / 2
第 2 横线处应填入:N - M5 - M2
第 1 横线处应填入:(N - M5 * 5) / 2
第 2 横线处应填入:N - M5 * 5 - M2 * 2
第 1 横线处应填入:N - M5 * 5 / 2
第 2 横线处应填入:N - M5 * 5 - M2 * 2
第 1 横线处应填入:(N - M5 * 5) / 2
第 2 横线处应填入:N - M5 - M2
下面 C++ 代码执行后的输出是( )。
int loopCount = 0;
for (int i = 0; i < 10; i++)
for (int j = 1; j < i; j++)
loopCount += 1;
cout << loopCount;
555555
454545
363636
282828
下面 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;
252525
161616
101010
999
假设下面 C++ 代码执行过程中仅输入正负整数或 000,有关说法错误的是( )。
int N, Sum = 0;
cin >> N;
while (N) {
Sum += N;
cin >> N;
}
cout << Sum;
执行上面代码如果输入 000,将终止循环
执行上面代码能实现所有非 000 整数的求和
执行上面代码第一次输入 000,最后将输出 000
执行上面代码将陷入死循环,可将 while (N) 改为 while (N == 0)
执行下面的 C++ 代码,有关说法正确的是( )【质数是指仅能被 111 和它本身整除的正整数】。
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;
如果输入正整数,上面代码能正确判断 NNN 是否为质数
如果输入整数,上面代码能正确判断 NNN 是否为质数
如果输入大于等于 000 的整数,上面代码能正确判断 NNN 是否质数
如将 Flag = true 修改为 Flag = N >= 2 ? true : false 则能判断所有整数包括负整数、000、正整数是否为质数
下面 C++ 代码用于实现如下图所示的效果,其有关说法正确的是( )。
for (int i = 1; i < 6; i++){ // L1
for (int j = 1; j < i+1; j++) //L2
cout << i*j << " ";
cout << endl;
}
当前代码能实现预期效果,无需调整代码
如果 cout << endl; 移到循环 L2 内部,则可实现预期效果
如果 cout << endl; 移到循环 L1 外部,则可实现预期效果
删除 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;
555 222
555 000
000 222
000 000
在下面的 C++ 代码中,NNN 必须是小于 101010 大于 111 的整数,MMM 为正整数(大于 000)。如果 MMM 被 NNN 整除则 MMM 为幸运数,如果 MMM 中含有 NNN 且能被 NNN 整除,则为超级幸运数,否则不是幸运数。程序用于判断 MMM 是否为幸运数或超级幸运数或非幸运数。阅读下面代码,有关说法正确的是( )。
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);
如果 NNN 输入 333,MMM 输入 363636 则将输出:363636 是 333 的超级幸运数!
如果 NNN 输入 777,MMM 输入 212121 则将输出:212121 是 777 的幸运数!
如果 NNN 输入 888,MMM 输入 363636 则将输出:363636 非 888 的超级幸运数!
如果 NNN 输入 333,MMM 输入 636363 则将输出:636363 是 333 的超级幸运数!
执行 C++ 代码 cout << '9' + '1'; 的输出为 101010。( )
C++ 表达式 -12 % 10 的值为 222。( )
C++ 表达式 int(12.56) 的值为 131313。( )
C++ 的整型变量 NNN 被赋值为 101010,则语句 cout << N / 3 << "-" << N % 3 执行后输出是 3-1。 ( )
在 C++ 代码中,不可以将变量命名为 scanf,因为 scanf 是 C++ 语言的关键字。( )
下面 C++ 代码执行后将导致死循环。( )
for (int i = 0; i < 10; i++)
continue;
下面 C++ 代码执行后将输出 101010。( )
int cnt = 0;
for (int i = 0; i < 10; i++)
for (int j = 0; j < i; j++){
cnt += 1;
break;
}
cout << cnt;
下面 C++ 代码执行后,将输出 555。( )
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 测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。( )
试题名称:平方之和
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨有 nnn 个正整数 a1,a2,…,ana_1,a_2,\dots,a_na1,a2,…,an,他想知道对于所有的 i(1≤i≤n)i (1\le i\le n)i(1≤i≤n),是否存在两个正整数 xxx 和 yyy 满足 x×x+y×y=aix\times x+y \times y=a_ix×x+y×y=ai。
输入格式
第一行包含一个正整数 nnn,代表正整数数量。 之后 nnn 行,每行包含一个正整数,代表 aia_iai。
输出格式
对于每个正整数 aia_iai,如果存在两个正整数 xxx 和 yyy 满足 x×x+y×y=aix\times x+y \times y=a_ix×x+y×y=ai,输出 Yes,否则输出 No。
样例输入 #1
2
5
4
样例输出 #1
Yes
No
说明/提示
对于第一个正整数,存在 1×1+2×2=51\times 1+2 \times 2=51×1+2×2=5,因此答案为 Yes。
对于全部数据,保证有 1≤n≤10,1≤ai≤1061 \le n \le 10,1 \le a_i \le 10^61≤n≤10,1≤ai≤106。
试题名称:计数
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨认为自己的幸运数是正整数 kkk(注:保证 1≤k≤91 \le k\le 91≤k≤9)。小杨想知道,对于从 111 到 nnn 的所有正整数中, kkk 出现了多少次。
输入格式
第一行包含一个正整数 nnn。
第二行包含一个正整数 kkk。
输出格式
输出从 111 到 nnn 的所有正整数中, kkk 出现的次数。
样例输入 #1
25
2
样例输出 #1
9
说明/提示
从 111 到 252525 中,222 出现的正整数有 2,12,20,21,22,23,24,252,12,20,21,22,23,24,252,12,20,21,22,23,24,25 ,一共出现了 999 次。
对于全部数据,保证有 1≤n≤1000,1≤k≤91 \le n\le 1000,1 \le k\le 91≤n≤1000,1≤k≤9。