GESP 客观题评测系统
2023-12-Level-1
2023-12-Level-1
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题)
以下C++不可以作为变量的名称的是()。
正确答案A
解析详情
【答案】A
【考点】变量命名规则
【解析】 C++ 变量名命名规则: 1. 只能由字母、数字和下划线组成。 2. 第一个字符不能是数字。 3. 不能是 C++ 的关键字。 4. 区分大小写。 选项 A 中 "CCF GESP" 包含空格,不符合命名规则。
第 2 题(单选题)
C++表达式 10 - 3 * (2 + 1) % 10 的值是()。
正确答案B
解析详情
【答案】B
【考点】算术运算符优先级
【解析】 计算步骤: 1. 括号优先:(2 + 1) = 3 2. 乘法和取模优先级相同,从左往右计算:3 * 3 = 9,然后 9 % 10 = 9 3. 减法:10 - 9 = 1 故表达式的值为 1。
第 3 题(单选题)
假设现在是上午十点,求出N小时(正整数)后是第几天几时,如输入20小时则为第2天6点,如N输入4则为今天14点。为实现相应功能,应在横线处填写代码是()。
int N, dayX, hourX;
cin >> N;
dayX = ___ , hourX = ___ ;
if (dayX == 0)
cout << "今天" << hourX << "点";
else
cout << "第" << (dayX + 1) << "天" << hourX << "点";正确答案B
解析详情
【答案】B
【考点】算术运算
【解析】 题干描述了上午十点过N小时后的日期和时间计算。dayX表示天数增加,hourX表示小时。初始是10点,N小时后总共是10+N小时。天数增加为 (10+N)/24,剩余小时为 (10+N)%24。选项B符合逻辑。
第 4 题(单选题)
下面的程序用于判断N是否为偶数,横线处应填写代码是()。
cin >> N;
if ( ______ )
cout << "偶数";
else
cout << "奇数";正确答案A
解析详情
【答案】A
【考点】分支结构
【解析】 判断 N 是否为偶数的条件是 `N % 2 == 0`。
第 5 题(单选题)
下面对C++代码执行后输出的描述,正确的是()。
cin >> N;
cnt = 0;
for (int i = 1; i < N; i++)
cnt += 1;
cout << cnt;正确答案B
解析详情
【答案】B
【考点】循环执行次数分析
【解析】 循环 `for (int i = 1; i < N; i++)` 会从 1 运行到 N-1。如果 N >= 2,循环体将执行 N-1 次,从而 `cnt` 的值为 N-1。
第 6 题(单选题)
下面C++代码执行后的输出是()。
cnt = 0;
for (int i = 1; i < 10; i++) {
cnt += 1;
i += 2;
}
cout << cnt;正确答案C
解析详情
【答案】C
【考点】循环控制结构
【解析】 循环执行过程: 1. i=1, cnt=1, i 增加 2 变为 3。 2. 循环末尾 i++,i 变为 4。 3. i=4, cnt=2, i 增加 2 变为 6。 4. 循环末尾 i++,i 变为 7。 5. i=7, cnt=3, i 增加 2 变为 9。 6. 循环末尾 i++,i 变为 10。 此时 i < 10 不成立,循环结束。cnt 为 3。
第 7 题(单选题)
下面 C++ 代码执行后的输出是()。
cnt = 0;
for(int i = 1; i < 20; i++) {
if(i % 2)
continue;
else if(i % 3 == 0 && i % 5 == 0)
break;
cnt += i;
}
cout << cnt;正确答案A
解析详情
【答案】A
【考点】循环结构、continue与break
【解析】 循环遍历 i 从 1 到 19: - 如果 i 是奇数 (i % 2),则 continue 跳过。 - 如果 i 同时被 3 和 5 整除 (i % 15 == 0),则 break 终止循环。由于 i < 20,只有 i=15 符合此条件,但 15 是奇数,会先触发 continue。 - 否则累加偶数 i 到 cnt:2, 4, 6, 8, 10, 12, 14, 16, 18。和为 90。
第 8 题(单选题)
下面C++代码执行后的输出是()。
N = 10;
cnt = 0;
while(1) {
if(N == 0) break;
cnt += 1;
N -= 2;
}
cout << cnt;正确答案C
解析详情
【答案】C
【考点】while循环
【解析】 N 从 10 开始,每次减 2,直到为 0。cnt 记录减法的次数。10/2 = 5 次。
第 9 题(单选题)
下面C++代码用于判断一个数是否为质数(素数),在横线处应填入代码是()。
cin >> N;
cnt = 0;
for (int i = 1; i < N + 1; i++)
if (N % i == 0)
______;
if (cnt == 2)
cout << N << "是质数。";
else
cout << N << "不是质数。";正确答案D
解析详情
【答案】D
【考点】质数判定
【解析】 统计因子个数。从 1 遍历到 N,如果 i 能整除 N,则 cnt 加 1。最后如果 cnt 为 2,说明是质数。
第 10 题(单选题)
对下面的代码,描述正确的是()。
#include <stdlib.h>
using namespace std;
int main() {
int arr[] = {2,6,3,5,4,8,1,0,9,10};
for(int i = 0;i < 10;i++)
cout << arr[i] << " ";
cout << i << endl;
cout << endl;
return 0;
}正确答案D
解析详情
【答案】D
【考点】变量作用域
【解析】 变量 i 在 for 循环内定义,其作用域仅限于该循环。在循环结束后尝试使用 i 会导致编译错误。
第 11 题(单选题)
执行下面 C++ 代码后输出是()。
cnt = 0;
for (i = 10; i > 3; i -= 3)
cnt = cnt + i;
cout << cnt;正确答案B
解析详情
【答案】B
【考点】循环结构分析
【解析】 1. i = 10, cnt = 10 2. i = 7, cnt = 17 3. i = 4, cnt = 21 4. i = 1, 循环结束。输出 21。
第 12 题(单选题)
定义变量 char c,下面对 c 赋值的语句,不符合语法的是()。
正确答案D
解析详情
【答案】D
【考点】类型转换语法
【解析】 选项 D 语法错误,类型转换需要括号。
第 13 题(单选题)
下图所示C++代码对大写字母 'A' 到 'Z' 分组,对每个字母输出所属的组号,那么输入 'C' 时将输出的组号是?( )。
char c;
while(1){
cin >> c;
if(c=='q') break;
switch(c){
case 'A': cout << "1"; break;
case 'B': cout << "3";
case 'C': cout << "3";
case 'D': cout << "5"; break;
case 'E': cout << "5"; break;
default: cout << "9";
}
cout << endl;
}正确答案B
解析详情
【答案】B
【考点】switch 贯穿
【解析】 输入为 'C',进入 `case 'C'` 输出 "3",由于无 `break`,贯穿执行 `case 'D'` 输出 "5" 后遇到 `break`。
第 14 题(单选题)
某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。()
正确答案C
解析详情
【答案】C
【考点】计算机基础
【解析】 油量表监控状态,非路径规划逻辑必须组件。
第 15 题(单选题)
现代计算机是指电子计算机,它所基于的是()体系结构。
正确答案B
解析详情
【答案】B
【考点】计算机体系结构
【解析】 冯·诺依曼结构的核心特点是“程序存储”和“二进制”。
判断题(每题 2 分)
第 1 题(判断题)
C++表达式 int(3.14) 的值为3。()
正确答案正确
解析详情
【答案】✓
【解析】 舍弃小数部分,结果为 3。
第 2 题(判断题)
C++语句 cout << (2 * 3, 3 % 10, 2 + 3) 的输出为 6, 3, 5。()
正确答案错误
解析详情
【答案】✗
【解析】 逗号运算符返回最后项的值,输出 5。
第 3 题(判断题)
for(int i = 1; i < 10; i += 3); 表示i from 1 开始到 10 结束间隔为 3,相当于 1、4、7、10。()
正确答案错误
解析详情
【答案】✗
【解析】 i < 10,不包含 10。
第 4 题(判断题)
C++表达式010+100+001的值为111。()
正确答案错误
解析详情
【答案】✗
【解析】 0 开头为八进制. 8 + 100 + 1 = 109。
第 5 题(判断题)
if 语句中的条件表达式的结果可以为 int 类型。
正确答案正确
解析详情
【答案】✓
【解析】 非零整数被视为 true。
第 6 题(判断题)
在下面的C++代码 while(1) continue; 中,由于循环中的 continue 是无条件被执行,因此将导致死循环。()
正确答案正确
解析详情
【答案】✓
【解析】 条件恒成立且无退出机制,死循环。
第 7 题(判断题)
C++表达式('1' + '1' == '2' ? flag=1 : flag=2)的结果值和表达式(flag==2)的相同。()
正确答案错误
解析详情
【答案】✗
【解析】 '1'+'1' 不等于 '2',flag=2,表达式值为 2(int),flag==2 为 true(bool)。
第 8 题(判断题)
在C++的程序中,不能用 scanf 作为变量名。()
正确答案错误
解析详情
【答案】✗
【解析】 scanf 不是关键字,可以作为变量名。
第 9 题(判断题)
小杨最近在准备考GESP,他用的Dev C++来练习和运行程序,所以Dev C++也是一个小型操作系统。()
正确答案错误
解析详情
【答案】✗
【解析】 Dev C++ 是 IDE。
第 10 题(判断题)
任何一个 while 循环都可以转化为等价的 for 循环()。
正确答案正确
解析详情
【答案】✓
【解析】 逻辑上可等价转化。