#1317. GESP-C++二级(2024-06)
GESP-C++二级(2024-06)
CCF GESP C++ 二级 (2024 年 06 月)
一、单选题(每题 2 分,共 30 分)
第 1 题:小杨父母带他到某培训机构给他报名参加 CCF 组织的 GESP 认证考试的#### 第 1 级,那他可以选择的认证语言有几种?( )
{{ select(1) }}
- 1
- 2
- 3
- 4
第 2 题:下面流程图在yr输入 2024 时,可以判定yr代表闰年,并输出 2 月是 29 天,则图中菱形框中应该填入 ( )。
{{ select(2) }}
- (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)
第 3 题:在 C++ 中,下列不可做变量的是 ( )。
{{ select(3) }}
- five - Star
- five_star
- fiveStar
- _fiveStar
第 4 题:在 C++ 中,与for(int i=0; i<10; i++)效果相同的是 ( )。
{{ select(4) }}
- 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++)
第 5 题:在 C++ 中,cout << (5 % 2 && 5 % 3)的输出是 ( )。
{{ select(5) }}
- 1
- 2
- true
- false
第 6 题:执行下面的 C++ 代码时输入 1,则输出是 ( )。
int month;
cin >> month;
switch(month){
case 1:
cout << "Jan ";
case 3:
cout << "Mar ";
break;
default:
}
{{ select(6) }}
- Jan
- Mar
- Jan Mar
- 以上均不对
第 7 题:执行下面 C++ 代码后,有关说法错误的是 ( )。
int a, b;
if (a && b)
cin >> a >> b;
cout << "1";
else if (!(a || b))
cout << "2";
else if (a || b)
cout << "3";
else
cout << "4";
{{ select(7) }}
- 如果先后输入 1 和 1,则将输出 1
- 如果先后输入 0 和 1 或者 1 和 0,则将输出 3
- 如果先后输入 0 和 0,则将输出 2
- 如果先后输入 0 和 0,则将输出 4
第 8 题:某货币由 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);
{{ select(8) }}
- 第 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
第 9 题:下面 C++ 代码执行后的输出是 ( )。
int loopCount = 0;
for (int i=0; i < 10; i++)
for (int j=1; j < i; j++)
loopCount += 1;
cout << loopCount;
{{ select(9) }}
- 55
- 45
- 36
- 28
第 10 题:下面 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;
{{ select(10) }}
- 25
- 16
- 10
- 9
第 11 题:假设下面 C++ 代码执行过程中仅输入正负整数或 0,有关说法错误的是 ( )。
int N,Sum = 0;
cin >> N;
while (N){
Sum += N;
cin >> N;
}
cout << Sum;
{{ select(11) }}
- 执行上面代码如果输入 0,将终止循环
- 执行上面代码能实现所有非 0 整数的求和
- 执行上面代码#### 第一次输入 0,最后将输出 0
- 执行上面代码将陷入死循环,可将while (N)改为while (N==0)
第 12 题:执行下面的 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;
{{ select(12) }}
- 如果输入正整数,上面代码能正确判断 N 是否为质数
- 如果输入整数,上面代码能正确判断 N 是否为质数
- 如果输入大于等于 0 的整数,上面代码能正确判断 N 是否质数
- 如将Flag = true修改为Flag = N>=2? true:false则能判断所有整数包括负整数、0、正整数是否为质数
第 13 题:下面 C++ 代码用于实现如下图所示的效果,其有关说法正确的是 ( )。
for (int i = 1; i < 6; i++){
for (int j = 1; j < i+1; j++)
cout << i*j << " ";
cout << endl;
}
{{ select(13) }}
- 当前代码能实现预期效果,无需调整代码
- 如果cout << endl;移到循环 L2 内部,则可实现预期效果
- 如果cout << endl;移到循环 L1 外部,则可实现预期效果
- 删除cout << endl;行,则可实现预期效果
第 14 题:下面 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;
{{ select(14) }}
- 5 2
- 5 0
- 0 2
- 0 0
第 15 题:在下面的 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);
{{ select(15) }}
- 如果 N 输入 3,M 输入 36 则将输出:36 是 3 的超级幸运数!
- 如果 N 输入 7,M 输入 21 则将输出:21 是 7 的幸运数!
- 如果 N 输入 8,M 输入 36 则将输出:36 非 8 的超级幸运数!
- 如果 N 输入 3,M 输入 63 则将输出:63 是 3 的超级幸运数!
二、判断题(每题 2 分,共 20 分)
第 1 题:执行 C++ 代码cout << '9'+'1';的输出为 10。( )
{{ select(16) }}
- 对
- 错
第 2 题:C++ 表达式-12 % 10的值为 2。( )
{{ select(17) }}
- 对
- 错
第 3 题:C++ 表达式int(12.56)的值为 13。( )
{{ select(18) }}
- 对
- 错
第 4 题:C++ 的整型变量 N 被赋值为 10,则语句cout << N / 3 << "-" << N % 3执行后输出是 3 - 1。 ( )
{{ select(19) }}
- 对
- 错
第 5 题:在 C++ 代码中,不可以将变量命名为scanf,因为scanf是 C++ 语言的关键字。( )
{{ select(20) }}
- 对
- 错
第 6 题:下面 C++ 代码执行后将导致死循环。( )
for (int i = 0; i < 10; i++)
continue;
{{ select(21) }}
- 对
- 错
第 7 题:下面 C++ 代码执行后将输出 10。( )
int cnt = 0;
for (int i = 0; i < 10; i++)
for (int j = 0; j < i; j++){
cnt += 1;
break;
}
cout << cnt;
{{ select(22) }}
- 对
- 错
第 8 题:下面 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;
{{ select(23) }}
- 对
- 错
第 9 题:下面 C++ 代码能实现正整数各位数字之和。( )
int N,Sum = 0;
cin >> N;
while (N){
Sum += N % 10;
N /= 10;
}
cout << Sum;
{{ select(24) }}
- 对
- 错
第 10 题:GESP 测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。( )
{{ select(25) }}
- 对
- 错