5328:[GESP202406二级] 客观题
文件提交:无需freopen
内存限制:128 MB
时间限制:1.000 S
评测方式:文本裁判
金币值:
命题人:
提交:2
解决:0
题目描述
**一.单选题(每题2分,共30分)**
1. 小杨父母带他到某培训机构给他报名参加 `CCF` 组织的 `GESP` 认证考试的第1级,那他可以选择的认证语言有几
种?( )。
- $1$
- $2$
- $3$
- $4$
2. 下面流程图在 `yr` 输入 $2024$ 时,可以判定 `yr` 代表闰年,并输出 $2$ 月是 $29$ 天 ,则图中菱形框中应该填入 ( )。

- `(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++中,下列不可做变量的是( )。
- `five-Star`
- `five_star`
- `fiveStar`
- `_fiveStar`
4. 在 `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++)`
5. 在C++中, `cout << (5 % 2 && 5 % 3)` 的输出是( )。
- 1
- 2
- `true`
- `false`
6. 执行下面的C++代码时输入 $1$ ,则输出是( )。
```cpp
int month;
cin >> month;
switch(month){
case 1:
cout << "Jan ";
case 3:
cout << "Mar ";
break;
default:
;
}
```
- Jan
- Mar
- Jan Mar
- 以上均不对
7. 执行下面C++代码后,有关说法错误的是( )。
```cpp
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";
```
- 如果先后输入 $1$ 和 $1$ ,则将输出 $1$
- 如果先后输入 $0$ 和 $1$ 或者 $1$ 和 $0$ ,则将输出 $3$
- 如果先后输入 $0$ 和 $0$ ,则将输出 $2$
- 如果先后输入 $0$ 和 $0$ ,则将输出 $4$
8. 某货币由 $5$ 元,$2$ 元和 $1$ 元组成。输入金额(假设为正整数),计算出最少数量。为实现其功能,横线处应填入代码是( )。
```cpp
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
9. 下面C++代码执行后的输出是
```cpp
int loopCount = 0;
for (int i=0; i < 10; i++)
for (int j=1; j < i; j++)
loopCount += 1;
cout << loopCount;
```
- $55$
- $45$
- $36$
- $28$
10. 下面C++代码执行后的输出是( )。
```cpp
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;
```
- $25$
- $16$
- $10$
- $9$
11. 假设下面C++代码执行过程中仅输入正负整数或 $0$ ,有关说法错误的是( )。
```cpp
int N,Sum = 0;
cin >> N;
while (N){
Sum += N;
cin >> N;
}
cout << Sum;
```
- 执行上面代码如果输入 $0$ ,将终止循环
- 执行上面代码能实现所有非 $0$ 整数的求和
- 执行上面代码第一次输入 $0$ ,最后将输出 $0$
- 执行上面代码将陷入死循环,可将 `while (N)` 改为 `while (N==0)`
12. 执行下面的C++代码,有关说法正确的是( )【质数是指仅能被1和它本身整除的正整数】。
```cpp
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;
```
- 如果输入正整数,上面代码能正确判断 `N` 是否为质数
- 如果输入整数,上面代码能正确判断 `N` 是否为质数
- 如果输入大于等于 $0$ 的整数,上面代码能正确判断 `N` 是否质数
- 如将 `Flag = true` 修改为 `Flag = N>=2? true:false` 则能判断所有整数包括负整数、0、正整数是否为质
数
13. 下面C++代码用于实现如下图所示的效果,其有关说法正确的是( )。

```cpp
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;` 行,则可实现预期效果
14. 下面C++代码执行后,输出是( )。
```cpp
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;
```
- `5 2`
- `5 0`
- `0 2`
- `0 0`
15. 在下面的C++代码中,`N` 必须是小于 $10$ 大于 $1$ 的整数,`M` 为正整数(大于 $0$ )。如果 `M` 被 `N` 整除则`M` 为幸运数,如果 `M` 中含有 `N` 且能被 `N` 整除,则为超级幸运数,否则不是幸运数。程序用于判断 `M` 是否为幸运数或超级幸运数或非幸运数。阅读下面代码,有关说法正确的是
```cpp
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);
```
- 如果`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分)**
16. 执行C++代码 `cout << '9'+'1';`的输出为10。
- 正确
- 错误
17. C++表达式 `-12 % 10` 的值为2。
- 正确
- 错误
18. C++表达式 `int(12.56)` 的值为 $13$ 。
- 正确
- 错误
19. C++的整型变量 `N` 被赋值为 $10$ ,则语句 `cout << N / 3 << "-" << N % 3` 执行后输出是 `3-1`。
- 正确
- 错误
20. 在C++代码中,不可以将变量命名为 `scanf` ,因为 `scanf` 是C++语言的关键字。
- 正确
- 错误
21. 下面C++代码执行后将导致死循环。
```cpp
int cnt = 0;
for (int i = 0; i < 10; i++)
for (int j = 0; j < i; j++){
cnt += 1;
break;
}
cout << cnt;
```
- 正确
- 错误
22. 下面C++代码执行后将输出 $10$。
```cpp
int cnt = 0;
for (int i = 0; i < 10; i++)
for (int j = 0; j < i; j++){
cnt += 1;
break;
}
cout << cnt;
```
- 正确
- 错误
23. 下面C++代码执行后,将输出 $5$ 。
```cpp
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;
```
- 正确
- 错误
24. 下面C++代码能实现正整数各位数字之和。
```cpp
int N,Sum = 0;
cin >> N;
while (N){
Sum += N % 10;
N /= 10;
}
cout << Sum;
```
- 正确
- 错误
25. `GESP` 测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。
- 正确
- 错误