2024年03月真题
一、单选题(每题2分,共30分)
第 1 题 以下不属于计算机输入设备的有( )。
- A. 键盘
- B. 音箱
- C. 鼠标
- D. 传感器
正确答案:B. 音箱
解析:
- A. 键盘:键盘是输入设备。
- B. 音箱:音箱是输出设备,不是输入设备。
- C. 鼠标:鼠标是输入设备。
- D. 传感器:传感器是输入设备。
第 2 题 计算机系统中存储的基本单位用B来表示,它代表的是( )。
- A. Byte
- B. Block
- C. Bulk
- D. Bit
正确答案:A. Byte
解析:
- A. Byte:Byte(字节)是计算机存储的基本单位。
- B. Block:块,不是计算机存储的基本单位。
- C. Bulk:大宗,不是计算机存储的基本单位。
- D. Bit:比特,是更小的存储单位,不是B表示的单位。
第 3 题 常量7.0的数据类型是( )。
- A. double
- B. float
- C. void
- D. int
正确答案:A. double
解析:
- A. double:7.0 是一个双精度浮点数(double)。
- B. float:7.0 是double类型,而不是float类型。
- C. void:void表示无类型,7.0不是void类型。
- D. int:7.0 不是整数类型。
第 4 题 下列关于C++语言的叙述,不正确的是( )。
- A. 变量定义时可以不初始化
- B. 变量被赋值之后的类型不变
- C. 变量没有定义也能够使用
- D. 变量名必须是合法的标识符
正确答案:C. 变量没有定义也能够使用
解析:
- A. 变量定义时可以不初始化:这在C++中是正确的。
- B. 变量被赋值之后的类型不变:这在C++中是正确的。
- C. 变量没有定义也能够使用:这是错误的,变量必须先定义才能使用。
- D. 变量名必须是合法的标识符:这在C++中是正确的。
第 5 题 以下不可以作为C++标识符的是( )。
- A. x321
- B. 0x321
- C. x321_
- D. _x321
正确答案:B. 0x321
解析:
- A. x321:合法的标识符。
- B. 0x321:标识符不能以数字开头,因此非法。
- C. x321_:合法的标识符。
- D. _x321:合法的标识符。
第 6 题 以下哪个不是C++语言的关键字?
- A. int
- B. for
- C. do
- D. cout
正确答案:D. cout
解析:
- A. int:C++关键字,用于声明整数类型。
- B. for:C++关键字,用于循环控制。
- C. do:C++关键字,用于do-while循环。
- D. cout:C++标准库对象,不是关键字。
第 7 题 如果a、b和c都是int类型的变量,下列哪个语句不符合C++语法?
- A. c = a + b;
- B. c += a + b;
- C. c = a = b;
- D. c = a ++ b;
正确答案:D. c = a ++ b;
解析:
- A. c = a + b;:符合语法,表示c等于a和b的和。
- B. c += a + b;:符合语法,表示将a和b的和加到c上。
- C. c = a = b;:符合语法,表示将b赋值给a,然后将a赋值给c。
- D. c = a ++ b;:不符合语法,++是后置递增运算符,不能与二元运算符直接组合使用。
第 8 题 如果用两个int类型的变量a和b分别表达长方形的长和宽,则下列哪个表达式不能用来计算长方形的周长?
- A. a + b * 2
- B. 2 * a + 2 * b
- C. a + b + a + b
- D. b + a * 2 + b
正确答案:A. a + b * 2
解析:
- A. a + b * 2:计算的是长加上宽的两倍,不是周长。
- B. 2 * a + 2 * b:计算的是周长。
- C. a + b + a + b:计算的是周长。
- D. b + a * 2 + b:计算的是周长。
第 9 题 表达式((3 == 0) + 'A' + 1 + 3.0)的结果类型为( )。
- A. double
- B. int
- C. char
- D. bool
正确答案:A. double
解析:
- A. double:表达式的结果包含一个浮点数3.0,最终结果为double类型。
- B. int:最终结果为double,而不是int。
- C. char:最终结果为double,而不是char。
- D. bool:最终结果为double,而不是bool。
第 10 题 如果a为int类型的变量,且a的值为6,则执行a *= 3;之后,a的值会是( )。
- A. 3
- B. 6
- C. 9
- D. 18
正确答案:D. 18
解析:
- A. 3:错误,a的值不会变为3。
- B. 6:错误,a的值不会保持不变。
- C. 9:错误,a的值不会是9。
- D. 18:正确,a *= 3等价于a = a * 3,因此a的值是18。
第 11 题 如果a和b均为int类型的变量,下列表达式不能正确判断"a等于0且b等于0"的是( )。
- A. (a == 0) && (b == 0)
- B. (a == b == 0)
- C. (!a) && (!b)
- D. (a == 0) + (b == 0) == 2
正确答案:B. (a == b == 0)
解析:
- A. (a == 0) && (b == 0):正确判断。
- B. (a == b == 0):错误的逻辑表达式,不能正确判断。
- C. (!a) && (!b):正确判断。
- D. (a == 0) + (b == 0) == 2:正确判断。
第 12 题 如果a为int类型的变量,下列哪个表达式可以正确求出满足"大于等于a 且是4的倍数"的整数中最小的?
- A. a * 4
- B. a / 4 * 4
- C. (a + 3) / 4 * 4
- D. a - a % 4 + 4
正确答案:C. (a + 3) / 4 * 4
解析:
- A. a * 4:不正确,计算的是a的四倍。
- B. a / 4 * 4:不正确,计算的是a四舍五入到最近的4的倍数。
- C. (a + 3) / 4 * 4:正确,计算大于等于a且是4的倍数的最小值。
- D. a - a % 4 + 4:不正确,计算的是下一个4的倍数,不一定大于等于a。
第 13 题 在下列代码的横线处填写( ),可以使得输出是"20 10"。
cpp#include <iostream> using namespace std; int main(){ int a = 10, b = 20; a = ______________;//在此处填入代码 b = a / 100; a = a % 100; cout << a << " " << b << endl; return 0;
- A. a + b
- B. (a + b) * 100
- C. b * 100 + a
- D. a * 100 + b
正确答案:D. a * 100 + b
解析:
- A. a + b:不正确,a + b 的值是 30,不符合题意。
- B. (a + b) * 100:不正确,(a + b) * 100 的值是 3000,不符合题意。
- C. b * 100 + a:不正确,b * 100 + a 的值是 2010,不符合题意。
- D. a * 100 + b :正确,a * 100 + b 的值是 1020,当
b = a / 100
时,b 的值是 10,当a = a % 100
时,a 的值是 20,符合题意。
第 14 题 在下列代码的横线处填写( ),可以使得输出是"1248"。
cpp#include <iostream> using namespace std; int main(){ for(int i = 1; i <= 8;______)//在此处填入代码 cout << i; return 0; }
- A. i++
- B. i *= 2
- C. i += 2
- D. i * 2
正确答案:B. i *= 2
解析:
- A. i++:不正确,i++的值是1到8,不符合题意。
- *B. i = 2:正确,i *= 2的值是1, 2, 4, 8,符合题意。
- C. i += 2:不正确,i += 2的值是1, 3, 5, 7,不符合题意。
- D. i * 2:不正确,i * 2不是一个合法的表达式。
第 15 题 执行以下C++语言程序后,输出结果是( )。
cpp#include <iostream> using namespace std; int main(){ int sum = 0; for(int i = 1; i <= 20; i ++) if(i % 3 == 0 || i % 5 == 0) sum += i; cout << sum << endl; return 0; }
- A. 210
- B. 113
- C. 98
- D. 15
正确答案:C. 98
解析:
- A. 210:不正确,210是1到20之间能被3或5整除的数(3, 5, 6, 9, 10, 12, 15, 18, 20)的和,但题目中只加和20以内的数。
- B. 113:不正确。
- C. 98:正确,程序对能被3或5整除的数(3, 5, 6, 9, 10, 12, 15, 18)的和进行累加,结果为98。
- D. 15:不正确,15不是正确的和。
2 判断题
第 1 题 在Windows 系统中通过键盘完成对选定文本移动的按键组合是先Ctrl+X,移动到目标位置后按Ctrl+V。( √ )
解析:
- 这个描述是正确的。在Windows系统中,Ctrl+X用于剪切选定的文本,然后Ctrl+V用于在目标位置粘贴该文本。
第 2 题 程序员用C、C++、Python、Scratch等编写的程序能在 CPU 上直接执行。( × )
解析:
- 程序员编写的代码需要经过编译或解释才能在CPU上执行。C和C++程序需要编译,Python和Scratch程序需要解释。
第 3 题 在C++语言中,注释不宜写得过多,否则会使得程序运行速度变慢。( × )
解析:
- 注释在编译过程中会被忽略,不影响程序的运行速度。注释的作用是帮助程序员理解代码。
第 4 题 在C++语言中,标识符中可以有数字,但不能以数字开头。( √ )
解析:
- 在C++中,标识符可以包含字母、数字和下划线,但不能以数字开头。
第 5 题 '3'是一个int类型常量。( × )
解析:
- '3'是一个字符常量,其类型是char,而不是int。
第 6 题 if 语句中的条件表达式的结果必须为bool类型。( × )
解析:
- 在C++中,if语句中的条件表达式结果不一定必须是bool类型。C++会将条件表达式的结果隐式转换为bool类型,任何非零值都被视为true,零值被视为false。
第 7 题 for 语句的循环体至少会执行一次。( × )
解析:
- 这是错误的。for语句的循环体可能一次也不执行,这取决于初始条件是否满足。
第 8 题 如果a为int类型的变量,则赋值语句a = a + 3;是错误的,因为这条语句会导致a无意义。( × )
解析:
- 这是错误的。赋值语句a = a + 3是合法的,表示将a的当前值增加3。
第 9 题 如果a为int类型的变量,则表达式(a / 4 == 2)和表达式(a >= 8 && a <= 11)的结果总是相同的。( √ )
解析:
- a / 4 == 2:表示 a 除以 4 的结果等于 2,这只有当 a 为 8、9、10 或 11 时才为真。
- a >= 8 && a <= 11:表示 a 的值在 8 到 11 之间,包括 8 和 11。
- 因此,这两个表达式的结果总是相同的。
第 10 题 表达式(3.5 * 2)的计算结果为7.0,且结果类型为double。( √ )
解析:
- 这个描述是正确的。3.5和2都是浮点数,相乘结果为7.0,结果类型为double。
3 编程题
3.1 编程题1
题目名称:每月天数
题面描述
小明刚刚学习了每月有多少天,以及如何判断平年和闰年,想到可以使用编程方法求出给定的月份有多少天。你能做到吗?
输入格式
输入一行,包含两个整数,分别表示一个日期的年、月。
输出格式
输出一行,包含一个整数,表示输入月份有多少天。
样例
输入
2022 1
输出
31
输入
2020 2
输出
29
参考程序:
cpp
#include <iostream> // 引入标准输入输出库
using namespace std;
int main() {
int y = 0, m = 0; // 定义年和月的变量并初始化
cin >> y >> m; // 读取输入的年和月
bool leap = false; // 定义一个布尔变量用于判断是否为闰年
if (y % 400 == 0) // 判断是否为闰年,能被400整除的是闰年
leap = true;
if (y % 4 == 0 && y % 100 != 0) // 判断是否为闰年,能被4整除但不能被100整除的是闰年
leap = true;
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) // 判断是否为大月
cout << 31 << endl; // 输出大月的天数
else if (m == 4 || m == 6 || m == 9 || m == 11) // 判断是否为小月
cout << 30 << endl; // 输出小月的天数
else if (leap) // 判断是否为闰年的2月
cout << 29 << endl; // 输出闰年2月的天数
else // 平年的2月
cout << 28 << endl; // 输出平年2月的天数
return 0; // 程序结束
}
解释:
这个程序首先读取输入的年份和月份。然后通过一系列条件判断确定该月份的天数。如果年份是闰年且月份是2月,则该月有29天;如果不是闰年的2月,则该月有28天。对于大月和小月,通过月份的判断直接输出对应的天数。
3.2 编程题2
题目名称:长方形面积
题面描述
小明刚刚学习了如何计算长方形面积。他发现,如果一个长方形的长和宽都是整数,它的面积一定也是整数。现在,小明想知道如果给定长方形的面积,有多少种可能的长方形,满足长和宽都是整数?
如果两个长方形的长相等、宽也相等,则认为是同一种长方形。约定长方形的长大于等于宽。正方形是长方形的特例,即长方形的长和宽可以相等。
输入格式
输入一行,包含一个整数 ( A ),表示长方形的面积。约定 ( 2 ≤ A ≤1000 )。
输出格式
输出一行,包含一个整数 ( C ),表示有 ( C ) 种可能的长方形。
样例
输入
4
输出
2
输入
6
输出
2
参考程序:
cpp
#include <iostream> // 引入标准输入输出库
using namespace std;
int main() {
int area = 0, cnt = 0; // 定义面积变量和计数器变量并初始化
cin >> area; // 读取输入的面积
for (int w = 1; w * w <= area; w++) { // 遍历所有可能的宽度,直到宽度的平方超过面积
if (area % w == 0) // 判断该宽度是否能整除面积
cnt++; // 如果能整除,计数器加1
}
cout << cnt << endl; // 输出计数器的值
return 0; // 程序结束
}
解释:
这个程序读取长方形的面积,然后通过遍历所有可能的宽度,判断是否可以整除面积来确定长方形的宽度。对于每一个可能的宽度,如果面积能被宽度整除,就增加计数器。最终输出计数器的值,即满足条件的长方形数量。