2023年06月真题
一、单选题(每题2分,共30分)
第 1 题 以下不属于计算机输出设备的有( )。
- A. 麦克风
- B. 音箱
- C. 打印机
- D. 显示器
正确答案:A. 麦克风
解析:
- A. 麦克风:麦克风是输入设备,用于将声音信号输入到计算机中。
- B. 音箱:音箱是输出设备,用于将计算机的音频信号输出成声音。
- C. 打印机:打印机是输出设备,用于将计算机的文档输出到纸张上。
- D. 显示器:显示器是输出设备,用于将计算机的图像和文本显示出来。
第 2 题 ChatGPT 是 OpenAI 研发的聊天机器人程序,它能通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动,完成很多工作。请你猜猜看,下面任务中,ChatGPT不能完成的是( )。
- A. 改邮件
- B. 编剧本
- C. 擦地板
- D. 写代码
正确答案:C. 擦地板
解析:
- A. 改邮件:ChatGPT 可以帮助修改和润色邮件。
- B. 编剧本:ChatGPT 可以根据提示编写剧本。
- C. 擦地板:ChatGPT 作为一个软件程序,无法进行物理清洁任务。
- D. 写代码:ChatGPT 可以根据提示生成代码。
第 3 题 常量’3’的数据类型是( )。
- A. double
- B. float
- C. char
- D. int
正确答案:C. char
解析:
- A. double:double 类型用于表示双精度浮点数。
- B. float:float 类型用于表示单精度浮点数。
- C. char:‘3’ 是一个字符常量,数据类型是 char。
- D. int:int 类型用于表示整数。
第 4 题 下列关于C++语言变量的叙述,正确的是( )。
- A. 变量可以没有定义
- B. 对一个没有定义的变量赋值,相当于定义了一个新变量
- C. 执行赋值语句后,变量的类型可能会变化
- D. 执行赋值语句后,变量的值可能不会变化
正确答案:D. 执行赋值语句后,变量的值可能不会变化
解析:
- A. 变量可以没有定义:错误,变量必须先定义才能使用。
- B. 对一个没有定义的变量赋值,相当于定义了一个新变量:错误,未定义的变量不能赋值。
- C. 执行赋值语句后,变量的类型可能会变化:错误,变量的类型在定义时确定,不能变化。
- D. 执行赋值语句后,变量的值可能不会变化:正确,赋值语句可能没有改变变量的值(如赋相同值)。
第 5 题 以下可以作为C++标识符的是( )。
- A. number_of_Chinese_people_in_millions
- B. 360AntiVirus
- C. Man&Woman
- D. break
正确答案:A. number_of_Chinese_people_in_millions
解析:
- A. number_of_Chinese_people_in_millions:合法的标识符,可以包含字母、数字和下划线。
- B. 360AntiVirus:非法标识符,不能以数字开头。
- C. Man&Woman:非法标识符,不能包含符号“&”。
- D. break:非法标识符,break 是 C++ 关键字。
第 6 题 以下哪个不是C++语言的关键字?( )
- A. double
- B. else
- C. while
- D. endl
正确答案:D. endl
解析:
- A. double:C++ 关键字,用于定义双精度浮点数。
- B. else:C++ 关键字,用于条件语句。
- C. while:C++ 关键字,用于循环语句。
- D. endl:不是关键字,是标准库中的换行符对象。
第 7 题 如果a、b和c都是int类型的变量,下列哪个语句不符合C++语法?( )
- A. a = (b == c);
- B. b = 5.5;
- C. c = a + b + c;
- D. a + c = b + c;
正确答案:D. a + c = b + c;
解析:
- A. a = (b == c);:符合语法,比较 b 和 c 是否相等,并将结果赋值给 a。
- B. b = 5.5;:符合语法,尽管会发生类型转换,b 被赋值为 5。
- C. c = a + b + c;:符合语法,将 a、b、c 的和赋值给 c。
- D. a + c = b + c;:不符合语法,不能对表达式进行赋值操作。
第 8 题 如果用一个int类型的变量a表达正方形的边长,则下列哪个表达式不能用来计算正方形的面积?( )
- A. a * a
- B. 1 * a * a
- C. a ^ 2
- D. a * 2 * a / 2
正确答案:C. a ^ 2
解析:
- A. a * a:正确,边长的平方是面积。
- B. 1 * a * a:正确,1 乘以边长的平方是面积。
- C. a ^ 2:错误,^ 是按位异或运算符,不是求幂运算符。
- D. a * 2 * a / 2:正确,变形后的计算也是面积。
第 9 题 表达式(4 * (11 + 12) / 4)的计算结果为( )。
- A. 47
- B. 20
- C. 23
- D. 56
正确答案:C. 23
解析:
- A. 47:错误,计算不正确。
- B. 20:错误,计算不正确。
- C. 23:正确,计算过程为 4 * (11 + 12) / 4 = 4 * 23 / 4 = 92 / 4 = 23。
- D. 56:错误,计算不正确。
第 10 题 如果a为int类型的变量,且a的值为6,则执行a %= 4;之后,a的值会是( )。
- A. 1
- B. 2
- C. 3
- D. 4
正确答案:B. 2
解析:
- A. 1:错误,6 % 4 的结果不是 1。
- B. 2:正确,6 % 4 的结果是 2。
- C. 3:错误,6 % 4 的结果不是 3。
- D. 4:错误,6 % 4 的结果不是 4。
第 11 题 如果a和b均为int类型的变量,下列表达式能正确判断“a等于0且b等于0”的是( )。
- A. (a == b == 0)
- B. !(a || b)
- C. (a + b == 0)
- D. (a == 0) + (b == 0)
正确答案:B. !(a || b)
解析:
- A. (a == b == 0):错误,无法正确判断。
- B. !(a || b):正确,a 和 b 都为 0 时,逻辑或为假,取反为真。
- C. (a + b == 0):错误,只能判断 a 和 b 的和为 0,不能单独判断。
- D. (a == 0) + (b == 0):错误,加法运算不能用于逻辑判断。
第 12 题 如果a和b为int类型的变量,且值分别为7和2,则下列哪个表达式的计算结果不是3.5?( )
- A. 0.0 + a / b
- B. (a + 0.0) / b
- C. (0.0 + a) / b
- D. a / (0.0 + b)
正确答案:A. 0.0 + a / b
解析:
- A. 0.0 + a / b:不正确,a / b 的结果是 3,0.0 + 3 的结果是 3。
- B. (a + 0.0) / b:正确,结果是 3.5。
- C. (0.0 + a) / b:正确,结果是 3.5。
- D. a / (0.0 + b):正确,结果是 3.5。
第 13 题 在下列代码的横线处填写( ),使得输出是“20 10”。
#include <iostream> using namespace std; int main(){ int a = 10, b = 20; a = __________;//在此处填入代码 b = a + b; a = b - a; cout << a << " " << b << endl; return 0; }
- A. a + b
- B. b
- C. a - b
- D. b - a
正确答案:C. a - b
解析:
- A. a + b:错误,赋值后 a 的值为 30,不符合题意。
- B. b:错误,赋值后 a 的值为 20,b 的值为 40,不符合题意。
- C. a - b:正确,赋值后 a 的值为 -10,b 的值为 10,a 的值为 20,符合题意。
- D. b - a:错误,赋值后 a 的值为 10,不符合题意。
第 14 题 在下列代码的横线处填写( ),可以使得输出是“147”。
#include <iostream> using namespace std; int main(){ for(int i = 1; i <= 8; i++) if(______)//在此处填入代码 cout << i; return 0; }
- A. i % 2 == 1
- B. i % 3 == 1
- C. i = i + 3
- D. i + 3
正确答案:B. i % 3 == 1
解析:
- A. i % 2 == 1:错误,输出的是1、3、5、7,不符合题意。
- B. i % 3 == 1:正确,输出的是1、4、7,符合题意。
- C. i = i + 3:错误,语法错误,无法在条件判断中使用赋值。
- D. i + 3:错误,语法错误,无法在条件判断中使用无效的表达式。
第 15 题 执行以下C++语言程序后,输出结果是( )。
#include <iostream> using namespace std; int main(){ int sum; for(int i = 1; i <= 20; i ++) if(i % 3 == 0 || i % 5 == 0) sum += i; cout << sum << endl; return 0; }
- A. 63
- B. 98
- C. 113
- D. 无法确定
正确答案:D. 无法确定
解析:
- A. 63:错误,无法确定 sum 的初始值。
- B. 98:错误,无法确定 sum 的初始值。
- C. 113:错误,无法确定 sum 的初始值。
- D. 无法确定:正确,sum 未初始化,输出结果不确定。
二、判断题(每题2分,共20分)
第 1 题 计算机硬件主要包括运算器、控制器、存储器、输入设备和输出设备。( √ )
解析:
- 计算机硬件的五大主要组成部分确实包括运算器、控制器、存储器、输入设备和输出设备。
第 2 题 诞生于1958年的103机是中国第一台通用数字电子计算机,比1946年在美国诞生的第一台通用电子计算机ENIAC晚了十多年。( √ )
解析:
- 103机是中国第一台通用数字电子计算机,ENIAC是世界上第一台通用电子计算机,二者诞生的时间相差了十多年。
第 3 题 在C++语言中,计算结果必须存储在变量中才能输出。( × )
解析:
- 在C++中,计算结果不一定必须存储在变量中。可以直接输出计算表达式的结果,例如
cout << 3 + 4;
。
第 4 题 在C++语言中,标识符的命名不能完全由数字组成,至少有一个字母就可以。( × )
解析:
- 标识符不能完全由数字组成,且不能以数字开头。可以包含字母、数字和下划线,但必须以字母或下划线开头。
第 5 题 10是一个int类型常量。( √ )
解析:
- 10 是一个整型常量,默认为 int 类型。
第 6 题 if语句可以没有else子句。( √ )
解析:
- if 语句可以独立存在,不需要一定有 else 子句。例如
if (a > b) { /*...*/ }
。
第 7 题 do … while语句的循环体至少会执行一次。( √ )
解析:
- do…while 循环的特点是先执行循环体再判断条件,因此循环体至少执行一次。
第 8 题 如果a和b为int类型的变量,则表达式a = b可以判断a和b是否相等。( × )
解析:
- 表达式
a = b
是赋值操作,将 b 的值赋给 a,而不是判断 a 和 b 是否相等。判断相等应该用a == b
。
第 9 题 如果a为int类型的变量,则表达式(a % 4 == 2)可以判断a的值是否为偶数。( × )
解析:
- 表达式
a % 4 == 2
判断的是 a 除以 4 的余数是否为 2,而不是判断 a 是否为偶数。判断偶数应为a % 2 == 0
。
第 10 题 表达式(37 / 4)的计算结果为9,且结果类型为int。( √ )
解析:
- 表达式
37 / 4
的结果为 9,因为在 C++ 中整数相除结果取整,且结果类型为 int。
三、编程题(每题25分,共50分)
1. 时间规划
题目描述
小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟,你能通过编程帮他做到吗?
输入格式
输入4行,第一行为开始时刻的小时,第二行为开始时刻的分钟,第三行为结束时刻的小时,第四行为结束时刻的分钟。
输入保证两个时刻是同一天,开始时刻一定在结束时刻之前。时刻使用24小时制,即小时在0到23之间,分钟在0到59之间。
输出格式
输出一行,包含一个整数,从开始时刻到结束时刻之间有多少分钟。
样例
输入
9
5
9
6
输出
1
输入
9
5
10
0
输出
55
参考程序:
#include <iostream> // 引入标准输入输出库
using namespace std;
int main() {
int h1 = 0, m1 = 0, h2 = 0, m2 = 0; // 定义开始和结束时间的小时和分钟变量
cin >> h1 >> m1; // 读取开始时刻的小时和分钟
cin >> h2 >> m2; // 读取结束时刻的小时和分钟
cout << (h2 - h1) * 60 + (m2 - m1) << endl; // 计算并输出从开始时刻到结束时刻之间的分钟数
return 0; // 程序结束
}
解释:
这个程序读取开始和结束的时间,然后计算它们之间的分钟数。通过计算小时差并将其转换为分钟,再加上分钟差,即可得到两个时刻之间的总分钟数。
2. 累计相加
题目描述
输入一个正整数 n,求形如:1 + (1 + 2) + … + (1 + 2 + 3 + … + n) 的累计相加。
输入格式
输入一个正整数。约定1 ≤ n ≤ 100。
输出格式
输出累计相加的结果。
样例
输入
3
输出
10
输入
4
输出
20
输入
10
输出
220
参考程序:
#include <iostream> // 引入标准输入输出库
using namespace std;
int main() {
int n = 0; // 定义输入的正整数变量
cin >> n; // 读取输入的正整数
int sum = 0; // 定义累计相加的结果变量并初始化
for (int i = 1; i <= n; i++) // 遍历从1到n的每一个整数
sum += (i * (i + 1)) / 2; // 计算每一步的累加和并加到总和中
cout << sum << endl; // 输出最终结果
return 0; // 程序结束
}
解释:
这个程序首先读取输入的正整数 n。然后通过遍历从1到n的每一个整数,计算每一步的累加和,并加到总和中。最终输出累计相加的结果。