GESP 客观题评测系统
2024-12-Level-1
2024-12-Level-1
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题)
2024年10月8日,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰·霍普菲尔德(John J. Hopfield)和杰弗里·辛顿(Geoffrey E. Hinton)。这两位科学家的主要研究方向是()。
正确答案C
解析详情
【答案】C 【考点】计算机基础与大事件 【解析】2024年诺贝尔物理学奖授予了约翰·霍普菲尔德和杰弗里·辛顿,以表彰他们在人工神经网络和机器学习方面的基础性发现。这两位科学家是深度学习和人工智能领域的先驱。 【易错点】误以为诺贝尔物理学奖只会颁给传统物理学领域。
第 2 题(单选题)
下列软件中是操作系统的是()。
正确答案C
解析详情
【答案】C 【考点】计算机操作系统基础 【解析】操作系统(OS)是管理计算机硬件与软件资源的程序。纯血鸿蒙(HarmonyOS NEXT)是华为开发的分布式操作系统。高德地图和腾讯会议属于应用软件,金山永中通常指办公套件软件。 【易错点】混淆应用软件与系统软件的概念。
第 3 题(单选题)
有关下列 C++ 代码的说法,正确的是()。
printf("Hello,GESP!");正确答案D
解析详情
【答案】D 【考点】C++ 字符串常量与输出 【解析】在C++中,相邻的字符串常量会自动拼接。因此 `"" "Hello" ""` 等价于 `"Hello"`。选项D提到的三个连续双引号在代码中表现为字符串拼接,输出效果不变。单引号用于字符常量,不能直接替换双引号输出字符串。 【易错点】对C++字符串常量的拼接特性不熟悉。
第 4 题(单选题)
C++表达式 12 - 3 * 2 && 2 的值是()。
正确答案B
解析详情
【答案】B 【考点】C++ 运算符优先级与逻辑运算 【解析】表达式 `12 - 3 * 2 && 2` 的计算过程:先算乘法 `3 * 2 = 6`,再算减法 `12 - 6 = 6`,最后算逻辑与 `6 && 2`。在C++中,非零值视为真(true),`6 && 2` 结果为 `true`,在整数上下文中输出 1。 【易错点】混淆逻辑与运算符 `&&` 与算术运算符或位运算符。
第 5 题(单选题)
在C++中,假设N为正整数2,则将输出()。
正确答案B
解析详情
【答案】B 【考点】C++ 算术运算符与整数除法 【解析】当 N=2 时,表达式 `N / 3 + N % 3`:`2 / 3` 为整数除法,结果为 0;`2 % 3` 为取模运算,结果为 2。因此 `0 + 2 = 2`。 【易错点】误将整数除法 `2 / 3` 计算为浮点数 0.666...。
第 6 题(单选题)
C++语句 cout << 7%3 << ' ' << "7%3" << ' ' << "7%3={7%3}" 执行后的输出是()。
正确答案D
解析详情
【答案】D 【考点】C++ 输出格式与字符串字面量 【解析】`7%3` 结果为 1;`"7%3"` 是普通字符串;`"7%3={7%3}"` 也是普通字符串,C++ `cout` 不会自动解析大括号内的表达式。因此输出顺序为 `1`、`7%3`、`7%3={7%3}`。选项D的描述最接近该字面量输出。 【易错点】误认为C++支持类似Python的字符串插值功能。
第 7 题(单选题)
下面C++代码执行后,求出几天后星期几。如果星期日则输出“星期天”否则输出形如“星期1”。横线上应填入的代码是( )。
int N, nowDay, afterDays;
cout << "今天星期几?" << endl;
cin >> nowDay;
cout << "求几天后星期几?" << endl;
cin >> afterDays;
N = nowDay + afterDays;
if(_____)
printf("星期天");
else
printf("星期%d", N % 7);正确答案B
解析详情
【答案】B 【考点】C++ 条件分支与取模应用 【解析】计算几天后是星期几通常使用 `(nowDay + afterDays) % 7`。如果结果为 0,通常代表星期天。题目要求如果是星期日则输出“星期天”,因此判断条件应为 `N % 7 == 0`。 【易错点】混淆取模结果与星期几的对应关系。
第 8 题(单选题)
下面 C++ 代码执行后输出是()。
int N=0,i;
for (i = 1; i < 10; i++)
N += 1;
cout << (N + i);正确答案C
解析详情
【答案】C 【考点】C++ 循环与变量作用域 【解析】循环 `for (i = 1; i < 10; i++)` 执行了 9 次(i从1到9),`N` 累加了 9 次,最终 `N = 9`。循环结束后,`i` 的值增加到 10 时退出。因此 `N + i = 9 + 10 = 19`。 【易错点】认为循环结束后 `i` 的值仍为 9。
第 9 题(单选题)
下面 C++ 代码执行后输出的是()。
int tnt = 0;
for (i = 0; i < 100; i++)
tnt += i % 10;
cout << tnt;正确答案C
解析详情
【答案】C 【考点】C++ 循环与算术运算 【解析】循环 `i` 从 0 到 99,`i % 10` 的值依次为 `0, 1, 2, ..., 9`,每 10 个数循环一次,共循环 10 次。每一组的和为 `0+1+...+9 = 45`,总和为 `45 * 10 = 450`。 【易错点】错误计算取模累加的规律或循环次数。
第 10 题(单选题)
下面 C++ 代码执行后输出的是()。
int N=0,i;
int tnt = 0;
for (i = 5; i < 100; i+=5){
if (i % 2 == 0)
continue;
tnt += 1;
if (i >= 50)
break;
}
cout << tnt;正确答案C
解析详情
【答案】C 【考点】C++ 循环控制(continue/break) 【解析】`i` 以 5 为步长递增:5(tnt=1), 10(偶数skip), 15(tnt=2), 20(skip), 25(tnt=3), 30(skip), 35(tnt=4), 40(skip), 45(tnt=5), 50(skip), 55(tnt=6, 满足 i>=50, break)。最终 `tnt` 为 6。 【易错点】忽略了 `50` 是偶数会触发 `continue`,而 `55` 才会触发 `break`。
第 11 题(单选题)
下面的程序用于判断输入的整数N是否为能被3整除的偶数,横线处应填写代码是()。
int N;
cin >> N;
if(_____)
cout << "能被3整除的偶数" << endl;
else
cout << "其他情形" << endl;
cout << endl;正确答案D
解析详情
【答案】D 【考点】C++ 逻辑表达式组合 【解析】“能被3整除”对应 `N % 3 == 0`,“偶数”对应 `N % 2 == 0`。两者需同时满足,使用逻辑与运算符 `&&`。因此填 `(N % 2 == 0) && (N % 3 == 0)`。 【易错点】逻辑运算符 `&&`(与)和 `||`(或)混淆。
第 12 题(单选题)
下面 C++ 代码执行后的输出 is()。
int cnt;
cnt = 0;
for(int i = 1; i < 10; i++)
cnt += i++;
cout << cnt;
cout << endl;正确答案C
解析详情
【答案】C 【考点】C++ 循环中的复合运算 【解析】循环 `i` 初始为 1,每次执行 `cnt += i++`。第一次:`cnt += 1`, `i` 变为 2,随后 `for` 循环 `i++` 变为 3;第二次:`cnt += 3`, `i` 变为 4,随后变为 5;以此类推,累加的数为 1, 3, 5, 7, 9,和为 25。 【易错点】重复计算了循环体内部 and 循环头部的 `i++`。
第 13 题(单选题)
int类型变量a的值是一个正方形的边长,如下图中的正方形的四条边长都为4,则下列哪个语句执行后能够使得正方形的周长(四条边长的和)增加4?( )。
+ + + + +
+
+
+
+ + + +正确答案D
解析详情
【答案】D 【考点】C++ 算术运算与自增应用 【解析】正方形周长 `P = 4 * a`。若周长增加 4,即 `P' = 4 * a + 4 = 4 * (a + 1)`,说明边长 `a` 需要增加 1。`++a;` 是前置自增运算符,能使 `a` 的值增加 1。 【易错点】误认为 `a + 1;` 这种不带赋值的表达式能修改变量的值。
第 14 题(单选题)
C++ 表达式 (6 > 2) * 2 的值是()。
正确答案B
解析详情
【答案】B 【考点】C++ 关系运算与类型转换 【解析】表达式 `(6 > 2)` 的值为真(true)。在参与乘法运算时,`true` 转换为整数 1。因此 `1 * 2 = 2`。 【易错点】认为关系运算的结果不能直接参与算术运算。
第 15 题(单选题)
下面C++代码用于判断输入的整数是否为位增数,即从首位到个位逐渐增大,是则输出1。如123是一个位增数。下面横线处应填入的是( )。
int N;
int n1, n2;
cin >> N;
___;
while(N){
n1 = N % 10;
if(n1 >= n2){
cout << 0;
return 1;
}
n2 = n1, N /=10;
}
cout << 1;
cout << endl;
return 0;正确答案D
解析详情
【答案】D 【考点】C++ 循环逻辑与数值处理 【解析】判断“位增数”需要从左往右(或从右往左)比较相邻位。代码中使用 `N % 10` 获取末位,并通过 `N /= 10` 移除末位。初始化时 `n2 = N % 10, N /= 10` 先保存并移除最右侧位,循环内比较 `n1`(当前位)与 `n2`(前一个位)。 【易错点】初始化 `n2` 的逻辑不完整导致循环首轮比较错误。
判断题(每题 2 分)
第 1 题(判断题)
在Windows的资源管理器中为已有文件A建立副本的操作是,然后。()
正确答案正确
解析详情
【答案】正确 【考点】计算机操作系统基本操作 【解析】在Windows系统中,Ctrl+C 是复制选定内容到剪贴板,Ctrl+V 是从剪贴板粘贴。对文件执行这两个操作可以创建该文件的副本。 【易错点】混淆剪切(Ctrl+X)与复制(Ctrl+C)的区别。
第 2 题(判断题)
在 C++ 中,表达式 8/3 和 8%3 的值相同。()
正确答案正确
解析详情
【答案】正确 【考点】C++ 算术运算(除法与取模) 【解析】`8 / 3` 是整数除法,结果为 2;`8 % 3` 是取模运算,余数为 2。两者数值相等。 【易错点】误以为 `8 / 3` 结果会包含小数部分。
第 3 题(判断题)
X 是 C++ 语言的基本类型变量,则语句 cin >> X,cout << X 能接收键盘输入并原样输出。()
正确答案错误
解析详情
【答案】错误 【考点】C++ 标准输入输出特性 【解析】`cin` 在读取不同类型数据时有特定行为,例如读取字符串时会忽略前导空白并以空白符结尾。对于基本类型,“原样输出”不一定成立,例如读取 `int` 时前导零会丢失。 【易错点】认为 `cin` and `cout` 只是简单的字符搬运。
第 4 题(判断题)
下面 C++ 代码执行后将输出 10。()
int N = 0;
for (int i = 0; i < 10; i++) {
continue;
N += 1;
}
cout << N;正确答案错误
解析详情
【答案】错误 【考点】C++ 循环控制(continue) 【解析】在循环中,`continue` 语句会跳过当前循环体中剩余的代码。因此 `N += 1` 永远不会被执行,`N` 的最终值始终为 0,不会输出 10。 【易错点】低估了 `continue` 对后续语句执行的影响。
第 5 题(判断题)
下面 C++ 代码执行后将输出 100。()
int i;
for (i = 0; i <= 100; i++)
continue;
cout << i;正确答案错误
解析详情
【答案】错误 【考点】C++ 循环边界条件 【解析】循环条件是 `i <= 100`,当 `i` 等于 100 时仍会执行循环体并进行 `i++`。当 `i` 变为 101 时循环终止,因此最终输出 `i` 的值为 101 而非 100。 【易错点】忽略了循环退出时循环变量已经完成了最后一次增量。
第 6 题(判断题)
下面 C++ 代码被执行时,将执行三次输出(即标记行 L2 将被执行一次)。()
for (int i = 0; i < 10; i+=3)
cout << i; //L2正确答案错误
解析详情
【答案】错误 【考点】C++ 循环执行次数计算 【解析】`i` 的取值序列为 0, 3, 6, 9。总共执行了 4 次循环输出。题目中说执行三次是错误的。 【易错点】错误计算步长累加导致的执行次数。
第 7 题(判断题)
C++语句 cout << (3,2) 执行后,将输出3 and 2,且3 and 2之间有逗号间隔。()
正确答案错误
解析详情
【答案】错误 【考点】C++ 逗号运算符 【解析】`cout << (3, 2)` 中,`(3, 2)` 是逗号表达式,其值取最后一个子表达式的结果,即 2。因此只会输出 2,不会有逗号或输出两个数字。 【易错点】混淆逗号运算符与输出语句中的多个参数分隔符。
第 8 题(判断题)
在C++代码中,studentName、student_name 以及 sStudentName 都是合法的变量名称。()
正确答案正确
解析详情
【答案】正确 【考点】C++ 变量命名规范 【解析】C++变量名可以由字母、数字 and 下划线组成,且不能以数字开头。`studentName`、`student_name` and `sStudentName` 均符合此规范且不是关键字。 【易错点】误以为驼峰命名或下划线命名在C++中有限制。
第 9 题(判断题)
在C++中,对浮点变量 float f,则语句 cin >> f; cout << (f<1); 在输入是 2e-1 时,输出是0。()
正确答案错误
解析详情
【答案】错误 【考点】C++ 浮点数科学计数法输入 【解析】`2e-1` 在科学计数法中表示 `2 * 10^-1 = 0.2`。`0.2 < 1` 成立,布尔表达式 `(f < 1)` 的值为 `true`(输出 1)。题目中说输出 0 是错误的。 【易错点】对科学计数法 `2e-1` 的数值大小理解有误。
第 10 题(判断题)
在C++的循环体内部,如果 break and continue 语句连续在一起,那么作用抵消,可以顺利执行下一次循环。()
正确答案错误
解析详情
【答案】错误 【考点】C++ 循环控制逻辑 【解析】`break` 会立即终止整个循环,而 `continue` 是跳过当前迭代。如果它们连续在一起,先执行的语句会立即生效,后执行的语句无法被触达,它们的作用并不会“抵消”。 【易错点】认为循环控制语句之间可以像算术运算一样抵消。