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