GESP 客观题评测系统
2024-06-Level-1
2024-06-Level-1
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题)
在C++中,下列不可做变量的是()。
正确答案A
解析详情
【答案】A 【考点】C++ 变量命名规则 【解析】C++ 变量名只能包含字母、数字和下划线,且不能以数字开头。选项 A 中的 five-Star 包含了减号(连字符),这是不允许的。 【易错点】混淆下划线(_)与连字符(-)。
第 2 题(单选题)
C++表达式 3 - 3 * 3 / 5 的值是()。
正确答案D
解析详情
【答案】D 【考点】算术运算符优先级 【解析】表达式 3 - 3 * 3 / 5 的运算顺序是:先做乘除法,再做加减法。3 * 3 = 9,9 / 5(整除)= 1,最后 3 - 1 = 2。 【易错点】忽略整除特性,或者先计算 3-3。
第 3 题(单选题)
在C++中,假设N为正整数,则表达式 cout << (N % 3 + N % 7) 可能输出的最大值是( )。
正确答案B
解析详情
【答案】B 【考点】取模运算的范围 【解析】N % 3 的可能值是 0, 1, 2;N % 7 的可能值是 0, 1, 2, 3, 4, 5, 6。两者相加的最大值为 2 + 6 = 8。 【易错点】误以为取模结果可以达到模数本身。
第 4 题(单选题)
C++语句 printf("5%2={%d}\n", 5 % 2) 执行后的输出是()。
正确答案C
解析详情
【答案】C 【考点】printf 格式化输出 【解析】printf("5%%2={%%d}\n", 5 %% 2) 中,前面的 "5%%2=" 是普通字符串,%%d 是占位符,由 5 %% 2 的结果(即 1)填充。输出结果为 5%2={1}。 【易错点】对 printf 格式控制符中的普通字符输出不熟悉。
第 5 题(单选题)
对整型变量 i,执行 C++ 语句 cin >> i,cout << i 时如果输入 5+2,下述说法正确的是()。
正确答案B
解析详情
【答案】B 【考点】cin 读取机制 【解析】执行 cin >> i 时,程序会尝试从输入流中读取一个整数。输入 5+2 时,它读取到 5 后,遇到非数字字符 '+' 停止读取,'+' 会留在输入缓冲区。因此 i 被赋值为 5。 【易错点】误以为 cin 会自动计算输入流中的算术表达式。
第 6 题(单选题)
下面C++代码执行后的输出是()。
float a;
a = 101.101;
a = 101;
printf("a+1={%.0f}", a+1);正确答案C
解析详情
【答案】C 【考点】变量赋值与 printf 精度控制 【解析】a 最终被赋值为 101。printf("a+1={%.0f}", a+1) 中,%.0f 表示输出浮点数且不保留小数位。101 + 1 = 102,输出为 a+1={102}。 【易错点】混淆 printf 的格式字符串与变量值的关系。
第 7 题(单选题)
表达式 9/4 - 6% (6 - 2) * 10 的值是()。
正确答案B
解析详情
【答案】B 【考点】算术表达式综合运算 【解析】9/4(整除)= 2。6% (6 - 2) * 10 = 6 % 4 * 10 = 2 * 10 = 20。最后 2 - 20 = -18。 【易错点】计算顺序错误,尤其是取模和乘法的同级运算顺序。
第 8 题(单选题)
下面C++代码执行时输入10后,正确的输出是()。
int N;
cout << "请输入正整数:";
cin >> N;
if (N % 3)
printf("第5行代码%2d", N % 3);
else
printf("第6行代码%2d", N % 3);正确答案C
解析详情
【答案】C 【考点】条件分支与 printf 宽度控制 【解析】输入 10,10 % 3 = 1。if(1) 为真,执行第 5 行。printf("第5行代码%2d", 1) 中,%2d 表示占 2 个字符位且右对齐,因此 1 前面会有一个空格。输出为“第5行代码 1”。 【易错点】忽略了 %2d 带来的前导空格。
第 9 题(单选题)
下面C++代码执行后输出是()。
int Sum = 0, i = 0;
for ( ; i < 10; )
Sum += i++;
cout << i << " " << Sum;正确答案C
解析详情
【答案】C 【考点】for 循环执行过程模拟 【解析】Sum = 0, i = 0。循环 10 次:Sum 累加 0, 1, ..., 9,总和为 45。每次循环 i 自增,最后一次 i=9 满足条件后自增到 10。循环结束输出 i=10 和 Sum=45。 【易错点】对后置自增 i++ 在表达式中的生效时机以及循环退出后 i 的值判断不准。
第 10 题(单选题)
下面C++代码用于判断N是否为质数(只能被1和它本身整除的正整数)。程序执行后,下面有关描述正确的是()。
int N;
cout << "请输入整数:";
cin >> N;
bool Flag = false;
if (N >= 2){
Flag = true;
for (int i = 2; i < N; i++)
if (N % i == 0){
Flag = false;
break;
}
}
if(Flag)
cout << "是质数";
else
cout << "不是质数";正确答案C
解析详情
【答案】C 【考点】质数判断算法边界 【解析】当输入 N 为 2 时,满足 N >= 2,Flag 设为 true。循环 for (int i = 2; i < 2; i++) 的初始条件 i < N 不满足,循环体不执行。最终 Flag 仍为 true,输出“是质数”,结果正确。 【易错点】误以为循环体必须执行才能得出正确结论。
第 11 题(单选题)
下面的C++代码用于求1~N之间所有奇数之和,其中N为正整数,如果N为奇数,则求和时包括N。有关描述错误的是()。
int N;
cout << "请输入正整数:";
cin >> N;
int i = 1, Sum = 0;
while (i <= N){
if (i % 2 == 1)
Sum += i;
i += 1;
}
cout << i << " " << Sum;正确答案C
解析详情
【答案】C 【考点】循环逻辑与变量更新顺序 【解析】如果将 i += 1 移到 if 语句前,那么在第一次循环时,i 会从 1 变成 2 再进入判断,从而漏掉了对初始值 1 的判断。这会导致计算结果错误。 【易错点】忽略了循环体内语句顺序对逻辑的重大影响。
第 12 题(单选题)
如果一个整数N能够表示为的形式,那么它就是一个完全平方数,下面C++代码用于完成判断N是否为一个完全平方数,在横线处应填入的代码是( )。
int N;
cin >> N;
for(int i = 0; i <= N; i++)
if(_____)
cout << N << "是一个完全平方数\n";正确答案D
解析详情
【答案】D 【考点】完全平方数判断 【解析】判断一个数 N 是否为完全平方数,最直接的方法是枚举 i,检查是否存在 i * i == N。 【易错点】误用数学公式或错误的运算符。
第 13 题(单选题)
执行下面C++代码后输出的cnt的值是()。
int cnt = 0;
for(int i = 0; i * i < 64; i += 2)
cnt++;
cout << cnt;正确答案C
解析详情
【答案】C 【考点】循环次数计算 【解析】i 的取值依次为 0, 2, 4, 6。当 i=8 时,i*i=64,不满足 i*i < 64 的条件,循环终止。cnt 分别在 i=0, 2, 4, 6 时自增,共执行 4 次。 【易错点】对循环终止条件 i*i < 64 的边界判断错误(如误认为包含 8)。
第 14 题(单选题)
小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?()
正确答案C
解析详情
【答案】C 【考点】GESP 认证常识 【解析】CCF 组织的 GESP 认证考试(1-4 级)通常提供 C++、Python 和图形化编程(Scratch)三种语言供考生选择。 【易错点】不了解考试的具体规则和提供的语言种类。
第 15 题(单选题)
ENIAC 于 1946 年投入运行,是世界上第一台真正意义上的计算机,它的主要部件都是()组成的。
正确答案B
解析详情
【答案】B 【考点】计算机发展史 【解析】世界上第一台通用电子计算机 ENIAC 使用的是电子管(Vacuum Tube)作为主要逻辑元件。 【易错点】混淆第一代(电子管)与第二代(晶体管)计算机的特征。
判断题(每题 2 分)
第 1 题(判断题)
在C++代码中变量 X 被赋值为16.44,则 cout << X / 10 执行后输出的一定是 1。()
正确答案错误
解析详情
【答案】错误 【考点】浮点数除法 【解析】变量 X 被赋值为 16.44。X / 10 的结果是 1.644。cout 默认会输出浮点数的所有有效位(或按默认精度),而不是只输出整数部分。 【易错点】误以为除法运算总是会像整除那样截断小数。
第 2 题(判断题)
C++的整型变量 N 被赋值为10,则语句 `cout << N / 4 << "->" << N % 4 << "->" << N / 4.0` 执行后输出是 2->2->2.0。()
正确答案错误
解析详情
【答案】错误 【考点】混合类型运算与输出格式 【解析】N=10。N/4 = 2 (整除);N%4 = 2;N/4.0 = 2.5 (浮点除)。输出应为 2->2->2.5。题干给出的 2.0 是错误的。 【易错点】忽视了浮点除法能产生精确的小数结果。
第 3 题(判断题)
定义C++的 `float` 型变量 N,则语句 `cin >> N;` `cout << int(float(N))` 可以输入正负整数和浮点数,并将其转换为整数后输出。()
正确答案正确
解析详情
【答案】正确 【考点】显式类型转换 【解析】float 类型的变量 N 可以接收整数和浮点数输入。int(float(N)) 先确保其为浮点数再强制截断为整数,逻辑上是成立的。 【易错点】怀疑连续类型转换的合法性。
第 4 题(判断题)
C++的整型 N 被赋值为5,语句 `printf("%d*2", N)` 执行后将输出 10。()
正确答案错误
解析详情
【答案】错误 【考点】printf 格式化字符串理解 【解析】printf("%d*2", N) 中,%d 会被 N 的值(5)替换,但后面的 *2 是普通字符,原样输出。输出结果为 5*2,而不是计算后的 10。 【易错点】误认为 printf 格式字符串内的表达式会自动进行数学计算。
第 5 题(判断题)
在C++中,`break` 语句用于终止当前层次的循环,循环可以是 for 循环,也可以是 while 循环。()
正确答案正确
解析详情
【答案】正确 【考点】break 语句的功能 【解析】break 语句用于跳出最近的一层循环体,无论是 for 循环还是 while 循环都适用。 【易错点】认为 break 只能用于某种特定的循环。
第 6 题(判断题)
在C++,`continue` 语句通常与 `if` 语句配合使用。()
正确答案正确
解析详情
【答案】正确 【考点】continue 语句的使用惯例 【解析】continue 用于跳过本次循环剩余部分。为了只在特定条件下跳过,它几乎总是嵌套在 if 语句中。 【易错点】不理解 continue 的典型应用场景。
第 7 题(判断题)
在C++代码中,不可以将变量命名为 `printf`,因为 `printf` 是C++语言的关键字。()
正确答案错误
解析详情
【答案】错误 【考点】标识符与库函数名 【解析】printf 是标准库中的函数名,不是 C++ 语言的保留关键字。在语法上,你可以定义一个名为 printf 的变量(虽然会遮蔽库函数导致无法调用输出),但这并不违法。 【易错点】分不清语言关键字(Keyword)与标准库函数(Library Function)。
第 8 题(判断题)
在C++中有整型变量 N,则表达式 N += 8/4//2 相当于 N += 8/(4/2)。()
正确答案错误
解析详情
【答案】错误 【考点】代码注释识别 【解析】在 C++ 中,// 及其之后的内容被视为注释。因此 8/4//2 实际计算的是 8/4。它不等于 8/(4/2)。 【易错点】忽略了 // 作为注释符的作用。
第 9 题(判断题)
C++中定义变量 `int N`,则表达式 (!!N) 的值也是 N 的值。()
正确答案错误
解析详情
【答案】错误 【考点】逻辑非运算的结果 【解析】!!N 是一种常用的将数值归一化为布尔值(0 或 1)的技巧。如果 N 为 5,!N 为 0,!!N 为 1。1 不等于原值 5。 【易错点】混淆逻辑非运算与数值本身的保持。
第 10 题(判断题)
GESP测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。()
正确答案正确
解析详情
【答案】正确 【考点】GESP 认证理念 【解析】GESP 旨在考查计算机科学素养和编程思维,其等级标准和题目逻辑在不同语言之间保持了高度的一致性。 【易错点】认为认证高度依赖于特定编程语言的语法细节。