个人技术分享

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的每一个整数,计算每一步的累加和,并加到总和中。最终输出累计相加的结果。