GESP 客观题评测系统
2024-09-Level-1
2024-09-Level-1
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题)
据有关资料,山东大学于1972年研制成功DJL-1计算机,并于1973年投入运行,其综合性能居当时全国第三位。DJL-1计算机运算控制部分所使用的磁心存储元件由磁心颗粒组成,设计存贮周期为(微秒)。那么该磁心存储元件相当于现代计算机的()。
正确答案A
解析详情
【答案】A 【考点】计算机基础与存储器 【解析】磁心存储元件是早期计算机中用于存储数据和指令的主要部件,其作用相当于现代计算机中的内存(RAM)。它具有较快的存取速度,是计算机运算控制部分直接访问的存储介质。 【易错点】不要将早期的存储技术误认为是外存(如磁盘)。
第 2 题(单选题)
C++ 程序执行出现错误,不太常见的调试手段是()。
正确答案D
解析详情
【答案】D 【考点】程序调试方法 【解析】C++ 常见的调试手段 include:阅读源代码(静态检查)、单步调试(逐行执行观察状态)、输出执行中间结果(打日志)。跟踪汇编码虽然也是一种手段,但在常规初级开发中并不常见。 【易错点】区分“常见”和“可行”的区别。
第 3 题(单选题)
在C++中,下列表达式错误的是()。
正确答案D
解析详情
【答案】D 【考点】C++ 字符串与字符语法 【解析】C++ 中,字符串常量必须使用双引号 `"` 包围,且成对出现。选项 D 中前面是双引号后面是单引号,引号不匹配,语法错误。 【易错点】字符串引号必须成对且匹配。
第 4 题(单选题)
C++表达式 10 - 3 * 2 的值是()。
正确答案B
解析详情
【答案】B 【考点】运算符优先级 【解析】在 C++ 算术运算中,乘法的优先级高于减法。因此 `10 - 3 * 2` 等价于 `10 - (3 * 2) = 10 - 6 = 4`。 【易错点】不要从左往右按顺序计算。
第 5 题(单选题)
在C++中,假设N为正整数10,则将输出()。
正确答案C
解析详情
【答案】C 【考点】整数除法与取余 【解析】当 `N = 10` 时:`N / 3` 是整数除法,结果为 3;`N % 3` 是取余运算,结果为 1。`3 + 1 = 4`。 【易错点】注意整数除法 `10 / 3` 的结果是 3 而不是 3.333。
第 6 题(单选题)
C++语句 printf("6%2={%d}", 6%2) 执行后的输出是()。
正确答案D
解析详情
【答案】D 【考点】`printf` 格式化输出 【解析】`printf("6%2={%d}", 6%2)` 中,占位符 `%d` 会被后面 `6%2` 的计算结果(即 0)替换。因此输出为 `6%2={0}`。 【易错点】注意格式化字符串中的非占位符部分会原样输出。
第 7 题(单选题)
成功执行下面的C++代码,先后从键盘上输入5回车和2回车,输出是()。
cin >> a;
cin >> b;
cout << a + b;正确答案D
解析详情
【答案】D 【考点】变量声明与类型 【解析】给出的代码片段中没有显示变量 `a` 和 `b` 的定义。C++ 是强类型语言,变量必须先定义类型才能使用,因此执行结果是不确定的。 【易错点】注意 C++ 语法要求所有变量必须先声明后使用。
第 8 题(单选题)
下面C++代码执行后输出是()。
int Sum = 0;
for (int i = 0; i < 10; i++)
Sum += i;
cout << Sum;正确答案B
解析详情
【答案】B 【考点】for 循环累加 【解析】循环 `for (int i = 0; i < 10; i++)` 会让 `i` 取值 0 到 9。累加和为 0+1+2+3+4+5+6+7+8+9 = 45。 【易错点】注意循环条件是 `i < 10`,不包括 10。
第 9 题(单选题)
下面C++代码执行后输出的是()。
int N = 0;
for (int i = 0; i < 10; i++)
N += 1;
cout << N;正确答案C
解析详情
【答案】C 【考点】循环计数 【解析】循环 `for (int i = 0; i < 10; i++)` 执行了 10 次。每次循环 `N += 1`,最终 `N` 的值为 10。 【易错点】区分累加变量 `i` 和累加常数 1。
第 10 题(单选题)
下面 C++ 代码执行后输出的是()。
int N = 0;
for (int i = 1; i < 10; i += 2){
if (i % 2 == 1)
continue;
N += 1;
}
cout << N;正确答案D
解析详情
【答案】D 【考点】循环逻辑与 `continue` 【解析】循环 `i` 取值 1, 3, 5, 7, 9,步长为 2。这些数都是奇数,因此 `i % 2 == 1` 始终成立。每次都会执行 `continue` 跳过累加。因此 `N` 始终为 0。 【易错点】注意 `i` 的步长和起始值导致 `i` 始终为奇数。
第 11 题(单选题)
下面 C++ 代码执行时输入 14+7 后,正确的输出是()。
int P;
printf("请输入正整数P: ");
scanf("%d", &P);
if (P % 3 || P % 7)
printf("第5行代码%d, %d", P % 3, P % 7);
else
printf("第7行代码%2d", P % 3 && P % 7);正确答案A
解析详情
【答案】A 【考点】`scanf` 输入与取余逻辑 【解析】输入 14(`scanf` 读到非数字字符停止)。`14 % 3 = 2`,`14 % 7 = 0`。满足 `if (P % 3 || P % 7)` 即 `if (2 || 0)` 为真。输出 `第5行代码2, 0`。 【易错点】理解逻辑或 `||` 只要有一个非零即为真。
第 12 题(单选题)
执行下面C++代码后得到的输出是()。
int count = 0, i, s;
for (i = 0, s = 0; i < 20; i++, count++)
s += i++;
cout << s << " " << count;正确答案D
解析详情
【答案】D 【考点】for 循环多变量操作 【解析】循环初始化 `i=0, s=0`。每次循环头部 `i++`, 体内 `s += i++`。这意味着 `i` 每次循环实质增加 2。`s` 累加了 0, 2, ..., 18,和为 90。执行 10 次循环,`count` 为 10。 【易错点】注意体内外的 `i++` 都会改变 `i` 的值。
第 13 题(单选题)
下面C++代码拟用于计算整数N的位数,比如对 123 则输出 123是3位整数,但代码中可能存在bug。下面有关描述正确的是()。
int N, N0, rc=0;
cout << "请输入整数:";
cin >> N;
N0 = N;
while (N){
rc++;
N /= 10;
}
printf("%d是%d位整数\n", N, rc); // L11正确答案C
解析详情
【答案】C 【考点】代码逻辑分析与 bug 修复 【解析】循环结束后 `N` 变为 0。在 L11 行输出时应使用备份变量 `N0`。选项 C 正确描述了通过修改 L11 可修复此问题。 【易错点】注意到 `N` 在循环中作为控制变量被减至 0。
第 14 题(单选题)
下面的C++代码用于求连续输入的若干正五位数的百位数之和。例如输入 32488 25731 41232 0,则输出 3个正五位数的百位数之和为13。有关描述错误的是()。
int M, Sum=0, rc=0;
cout << "请输入正整数:";
cin >> M;
while (M){
M = (M / 100 % 10); // L6
Sum += M;
rc++;
cin >> M;
}
cout << rc << "个正五位数的百位数之和为" << Sum;正确答案D
解析详情
【答案】D 【考点】算术运算(取百位数) 【解析】对于正五位数,取百位数的方法是 `M / 100 % 10` 或 `M % 1000 / 100`。选项 D 中 `M % 100 / 10` 得到的是十位数,因此说法错误。 【易错点】区分取余和除法的组合效果。
第 15 题(单选题)
如果一个正整数N能够表示为的形式,这里称它是一个“兄弟数”。例如,输入6,则输出“6是一个兄弟数”。下面C++代码用来判断N是否为一个“兄弟数”,在横线处应填入的代码可从i-iv中选择,则有几个能完成功能?( )。
int N;
cin >> N;
for(int i = 0; i <= N; i++)
if(_____)
cout << N << "是一个兄弟数\n";i) N==i*(i+1) ii) N==i*(i-1) iii) N/(i+1)==i iv) N/(i-1)==i
正确答案B
解析详情
【答案】B 【考点】兄弟数判断逻辑 【解析】兄弟数 N = X(X+1)。i) `N == i*(i+1)` 符合定义。ii) `N == i*(i-1)` 也是等价的(令 X=i-1)。而使用 `/` 整数除法的判断不严谨。 【易错点】理解整数除法会自动向下取整,不能简单代替乘法等式。
判断题(每题 2 分)
第 1 题(判断题)
小杨最近开始学习C++编程,老师说C++是一门面向对象的编程语言,也是一门高级语言。()
正确答案正确
解析详情
【答案】正确 【考点】C++ 语言特性 【解析】C++ 是一门支持面向对象编程(OOP)的高级语言,同时也兼容过程化编程。 【易错点】理解“高级语言”和“面向对象”的概念。
第 2 题(判断题)
在C++中,表达式 10/4 和 10%4 的值相同,都是整数2,说明 / 和 % 可以互相替换。()
正确答案错误
解析详情
【答案】错误 【考点】运算符含义 【解析】`/` 是除法取商,`%` 是取模取余。虽然在此例子中结果巧合相同,但功能完全不同,不能互相替换。 【易错点】不要基于特殊例子的巧合得出一般性结论。
第 3 题(判断题)
N是C++程序中的整型变量,则语句 `scanf("%d", &N)` 能接收形如正整数、负整数和0输入,但如果输入含字母或带小数点数,将导致无法执行。()
正确答案错误
解析详情
【答案】错误 【考点】`scanf` 输入特性 【解析】当输入不匹配时(如整型变量输入字母),`scanf` 会停止读取并保留错误字符,程序继续向下执行。并不会导致“无法执行”。 【易错点】理解输入流读取失败的处理方式。
第 4 题(判断题)
下面 C++ 代码能够执行,则将输出 45。()
for (int i = 0; i < 10; i++)
Sum += i;
cout << Sum;正确答案错误
解析详情
【答案】错误 【考点】变量初始化 【解析】代码中 `Sum` 未初始化。在 C++ 中局部变量初值是随机的,直接累加会导致错误结果。 【易错点】养成累加器变量先赋初值 0 的习惯。
第 5 题(判断题)
在C++代码中整型变量X被赋值为20.24,则执行后输出的是 2.124。()
正确答案错误
解析详情
【答案】错误 【考点】逗号表达式与整型赋值 【解析】`int X = 20.24;` 后 `X` 为 20。`(X++, X+1)` 结果为 22。`22 / 10` 结果为 2。输出不会带小数。 【易错点】注意逗号表达式的结果是最后一项的值。
第 6 题(判断题)
下面C++代码执行后,最后一次输出是10。()
for (int i = 1; i < 10; i += 3)
cout << i << endl;正确答案错误
解析详情
【答案】错误 【考点】循环边界分析 【解析】`i` 取值 1, 4, 7。当下一次 `i=10` 时不满足条件,循环终止。最后一次输出的是 7。 【易错点】检查循环终止的具体条件。
第 7 题(判断题)
在 C++,break 语句通常与 if 语句配合使用。()
正确答案错误
解析详情
【答案】错误 【考点】`break` 语句用法 【解析】`break` 主要用于跳出循环或 `switch`。虽然常与 if 配合使用实现条件跳出,但其语法归属是循环结构,非 if 语句配套部件。 【易错点】理解 `break` 的作用对象是最近的一层循环或 switch。
第 8 题(判断题)
在C++代码中,不可以将变量命名为 five-star,因为变量名中不可以出现 -(减号)符号。()
正确答案正确
解析详情
【答案】正确 【考点】标识符命名规则 【解析】C++ 变量名由字母、数字和下划线组成。减号 `-` 是算术运算符,不能出现在变量名中。 【易错点】区分下划线 `_` 和减号 `-`。
第 9 题(判断题)
在C++语言中,整型、实数型、字符型、布尔型是不同数据类型,但这四种类型的变量间都可以比较大小。()
正确答案正确
解析详情
【答案】正确 【考点】数据类型比较 【解析】C++ 中,整型、浮点型、字符型、布尔型之间可以通过隐式类型转换进行互相比较。 【易错点】理解不同基本类型在比较时的自动转换。
第 10 题(判断题)
C++中,定义变量 int a=5, b=4, c=3,则表达式(a<b<c)的值为逻辑假。()
正确答案错误
解析详情
【答案】错误 【考点】关系运算符结合性 【解析】`a < b < c` 解析为 `(a < b) < c`。`5 < 4` 为 0,`0 < 3` 为真。因此表达式值为真。 【易错点】不要将 C++ 的关系运算误认为是数学上的连续不等式。