GESP 客观题评测系统
2023-12-Level-3
2023-12-Level-3
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题)
下面C++数组的定义中,会丢失数据的是()。
正确答案C
解析详情
【答案】C 【考点】基本类型、数组初始化、字符与字符串区别 【解析】 选项 C 中 `{'chen', 'wang', 'zhou }` 试图将多字符字符串放入 `char` 数组的单个元素中(且括号内单引号不匹配),这在 C++ 中是不正确的数组初始化方式,且会导致数据丢失或编译错误。选项 A、B、D 都是合法的数组定义(尽管 A 也有单引号不匹配的问题,但 C 的错误更典型于数据丢失/类型不符)。 【易错点】
第 2 题(单选题)
在下列编码中,不能够和二进制"1101 1101"相等的是()。
正确答案D
解析详情
【答案】D 【考点】进制转换 【解析】 二进制 1101 1101 转换为其他进制: - 十进制:1 imes 2^7 + 1 imes 2^6 + 0 imes 2^5 + 1 imes 2^4 + 1 imes 2^3 + 1 imes 2^2 + 0 imes 2^1 + 1 imes 2^0 = 128 + 64 + 16 + 8 + 4 + 1 = 221。 (A正确) - 八进制:11 011 101 -> 335。 (B正确) - 十六进制:1101 1101 -> DD。 (C正确) - D选项 5D 对应的二进制是 0101 1101。 【易错点】
第 3 题(单选题)
下面C++代码执行后不能输出"GESP"的是()。
正确答案C
解析详情
【答案】C 【考点】string 字符串索引 【解析】 C++ 中 string 索引从 0 开始。"GESP" 的索引为 0, 1, 2, 3。C 选项访问 `str[1]` 到 `str[4]`,不仅跳过了第一个字符 'G',还访问了越界的 `str[4]`。 【易错点】
第 4 题(单选题)
执行下面 C++ 代码输出是()。
int temp=0;
for(int i=1;i<7;i++)
{
for(int j=1;j<5;j++)
{
if(i/j==2)
{
temp++;
}
}
}
cout<<temp<<endl;正确答案C
解析详情
【答案】C 【考点】嵌套循环、整数除法 【解析】 枚举满足 i/j == 2 的 (i, j): - i=1: 1/1=1, 1/2=0, 1/3=0, 1/4=0 - i=2: 2/1=2 (满足) - i=3: 3/1=3, 3/2=1 - i=4: 4/1=4, 4/2=2 (满足) - i=5: 5/1=5, 5/2=2 (满足) - i=6: 6/1=6, 6/2=3, 6/3=2 (满足) 总共 4 次满足条件。 【易错点】
第 5 题(单选题)
执行下面 C++ 代码后,输出是()。
string str = ("chen");
int x = str.length();
int temp = 0;
for (int i = 0; i <= x; i++)
{
temp++;
}
cout << temp << endl;正确答案C
解析详情
【答案】C 【考点】string 长度、循环边界 【解析】 str = "chen",x = str.length() = 4。循环条件是 i <= x,即 i 从 0 到 4,共执行 5 次循环,temp++ 执行 5 次。 【易错点】
第 6 题(单选题)
执行下面C++代码后输出的是()。
string str = ("chen");
int x = str.length();
cout << x << endl;正确答案A
解析详情
【答案】A 【考点】string 长度 【解析】 "chen" 的长度为 4。 【易错点】
第 7 题(单选题)
执行下面C++代码后输出的是()。
string str = ("chen");
cout << str[5] << endl;正确答案A
解析详情
【答案】A 【考点】字符串索引越界 【解析】 "chen" 的索引为 0-3,str[4] 是 '\0',str[5] 已经发生越界访问,结果是不确定的。 【易错点】
第 8 题(单选题)
下面C++代码执行后的输出是()。
char ch[10] = {'1'};
cout << ch[2] << endl;正确答案D
解析详情
【答案】D 【考点】数组初始化、字符数组 【解析】 `char ch[10] = {'1'};` 初始化第一个元素为 '1',其余元素自动初始化为 '\0'。ch[2] 为 '\0',在 cout 输出时不会显示任何字符。 【易错点】
第 9 题(单选题)
下面C++代码用于统计每种字符出现的次数,当输出为3时,横线上不能填入的代码是()。
string str="GESP is a good programming test!";
int x=0;
for(int i=0;i<str.length();i++)
{
if(_____)
{
x++;
}
}
cout<<x<<endl;正确答案C
解析详情
【答案】C 【考点】字符编码、字符串搜索 【解析】 统计字符串中各字符: 'o' 的次数:good(2), programming(1) -> 共3次。 's' 的次数:is(1), test(1) -> 共2次。(GESP中的是 'S') 选项 A: str[i]=='o' (次数3) 选项 B: 'a'+14 = 97+14 = 111 ('o') (次数3) 选项 D: str[i]==111 ('o') (次数3) 选项 C: str[i]==115 ('s') (次数2) 因此 C 填入后输出为 2,不是 3。 【易错点】
第 10 题(单选题)
32位计算机中,C++的整型变量int能够表示的数据范围是()。
正确答案C
解析详情
【答案】C 【考点】数据范围、int 类型 【解析】 32 位有符号整数 int 的范围是 -2^{31} 到 2^{31}-1。 【易错点】
第 11 题(单选题)
下面 C++ 程序执行的结果是()。
int cnt=0;
for(int i=0;i<=20;i++)
{
if(i%3==0&&i%5==0)
{
cnt++;
}
}
cout<<cnt;正确答案A
解析详情
【答案】A 【考点】循环、条件判断(倍数) 【解析】 0 到 20 之间能同时被 3 和 5 整除的数(即 15 的倍数):0, 15。共 2 个。 【易错点】
第 12 题(单选题)
C++ 的数据类型转换让人很难琢磨透,下列代码输出的值是()。
int a=3;
int b=2;
cout<<a/b*1.0<<endl;正确答案B
解析详情
【答案】B 【考点】整数除法、运算顺序 【解析】 `a/b` 是两个整数相除,结果为 1。然后 `1 * 1.0` 结果为 1.0。输出时显示为 1。 【易错点】
第 13 题(单选题)
C++代码用于抽取字符串中的电话号码。约定:电话号码全部是数字,数字之间没有其他符号如连字符或空格等。代码中变量strSrc仅仅是示例,可以包含更多字符。下面有关代码说法,正确的说法是()。
string strSrc = "红十字:01084025890 大警电话:115 急救电话:120 紧急求助:110;";
string tel = "";
for (int i = 0; i <= strSrc.length(); i++)
{
if (strSrc[i] >= '0' && strSrc[i] <= '9')
{
tel = tel + strSrc[i];
}
else if (tel != "")
{
cout << tel << endl;
tel = "";
}
}正确答案A
解析详情
【答案】A 【考点】字符串处理、逻辑分支 【解析】 代码逻辑:遇到数字则累加到 tel 中;遇到非数字且 tel 不为空时,输出 tel 并换行。这会正确分离并输出连续的数字串。 【易错点】
第 14 题(单选题)
某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。()
正确答案C
解析详情
【答案】C 【考点】计算机系统组成、应用场景 【解析】 选路必须输入指令(麦克风)、获取环境信息(传感器)、告知结果(扬声器可选,但选路计算本身需要数据)。油量表是监控车辆状态的,不是“选择路线”算法必须的输入。 【易错点】
第 15 题(单选题)
现代计算机是指电子计算机,它所基于的是()体系结构。
正确答案B
解析详情
【答案】B 【考点】计算机体系结构 【解析】 现代计算机基本都采用冯·诺依曼体系结构。 【易错点】
判断题(每题 2 分)
第 1 题(判断题)
执行C++代码cout<<(5&&2)<<endl;后将输出1。()
正确答案正确
解析详情
【答案】✓ 【考点】逻辑运算 【解析】 5 和 2 都是非零值(真),逻辑与运算的结果为真(1)。 【易错点】
第 2 题(判断题)
C++程序执行后,输入chen a dai输出应该为:chen。()
string str;
cin>>str;
cout<<str;正确答案正确
解析详情
【答案】✓ 【考点】cin 输入特性 【解析】 cin 以空格为分隔符。输入 "chen a dai" 时,str 只会接收第一个单词 "chen"。 【易错点】
第 3 题(判断题)
执行 C++ 代码 `cout<<(5||2);` 后将输出 1。()
正确答案正确
解析详情
【答案】✓ 【考点】逻辑运算 【解析】 5 和 2 都是非零值(真),逻辑或运算结果为真(1)。 【易错点】
第 4 题(判断题)
执行下面 C++ 代码后将输出 "China"。 ()
string a="china";
a.replace(0,1,"C");
cout<<a<<endl;正确答案正确
解析详情
【答案】✓ 【考点】string 替换 【解析】 `replace(0, 1, "C")` 将字符串索引为 0 的 1 个字符替换为 "C"。"china" 变为 "China"。 【易错点】
第 5 题(判断题)
执行 C++ 代码将输出 05,5之后还有一个空格。()
int list[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;i++)
{
if(i%5==0)
{
cout<<list[i]<<" ";
}
}正确答案错误
解析详情
【答案】✗ 【考点】循环、取模运算 【解析】 循环中 i 分别为 0 和 5 时满足 `i%5==0`。输出 `list[0]` 和 `list[5]`,即 1 和 6。输出内容不是 "05"。 【易错点】
第 6 题(判断题)
下面 C++ 代码将输出 1 ()
int list[10]={1};
cout<<list<<endl;正确答案错误
解析详情
【答案】✗ 【考点】数组名与指针 【解析】 直接输出数组名 `list` 将输出数组的首地址,而不是数组的第一个元素。 【易错点】
第 7 题(判断题)
下面 C++ 程序将输出 1。()
int arr[10]={1};
cout<<arr[0]<<endl;正确答案正确
解析详情
【答案】✓ 【考点】数组初始化 【解析】 `int arr[10]={1}` 初始化首元素为 1,其余为 0。`arr[0]` 确实为 1。 【易错点】
第 8 题(判断题)
执行 C++ 代码,将输出 13579,9之后还有一个空格。()
int list[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;i+=2)
{
cout<<list[i]<<" ";
}正确答案正确
解析详情
【答案】✓ 【考点】循环步长、数组访问 【解析】 i 每次增加 2,访问 `list[0], list[2], list[4], list[6], list[8]`,即 1, 3, 5, 7, 9。断言输出内容基本正确(取决于输出间隔符号的具体识别)。 【易错点】
第 9 题(判断题)
小杨最近在准备考GESP,他用的Dev C++来练习和运行程序,所以Dev C++也是一个小型操作系统。()
正确答案错误
解析详情
【答案】✗ 【考点】计算机基础知识 【解析】 Dev C++ 是一个集成开发环境(IDE),不是操作系统。 【易错点】
第 10 题(判断题)
任何一个 while 循环都可以转化为等价的 for 循环()。
正确答案正确
解析详情
【答案】✓ 【考点】循环转换 【解析】 while 循环和 for 循环在功能上是等价的,可以互相转换。 【易错点】