- C++
X02_初赛练习卷二
- 2024-2-2 9:44:53 @
【题目描述】
以下哪项不属于计算机的基本组成部分?
A. 中央处理器(CPU) B. 输入设备 C. 输出设备 D. 风扇
【题目答案】
D
【题目解析】
计算机的基本组成部分包括中央处理器(CPU)、内存、输入设备和输出设备。CPU是计算机的核心部件,负责执行指令和控制计算机的运行。内存用于存储程序和数据。输入设备用于将外部数据传递给计算机,如键盘、鼠标、扫描仪等。输出设备用于将计算机处理后的数据显示或输出,如显示器、打印机、投影仪等。而风扇通常被用来降温,不是计算机的基本组成部分,因此选项D为正确答案。
【题目描述】
以下哪种不属于计算机的主要存储器类型?
A. 内存(NVRAM) B. 硬盘驱动器(HDD) C. 高速缓存(Cache) D. 光盘(DVD)
【题目答案】
D
【题目解析】
计算机的主要存储器类型包括内存(NVRAM)、硬盘驱动器(HDD)和高速缓存(Cache)。内存是计算机用于临时存储数据和程序的地方,NVRAM指的是非易失性随机存取存储器,如固态硬盘(SSD)。硬盘驱动器是计算机用于永久性存储数据的设备,如机械硬盘(HDD)和固态硬盘(SSD)。高速缓存是计算机用于暂时性存储常用数据和指令的快速存储器,作为CPU和内存之间的缓冲区,以提高数据读取速度。
而光盘(DVD)是一种读取数据的外部存储设备,不属于计算机的主要存储器类型。因此选项D为正确答案。
【题目描述】
一幅分辨率为 1920*1080 的位图,每个像素点需要占用 3 个字节来保存其 RGB 值。那么这幅位图占用的内存大小是多少?
A. 5.00 MB B. 6.22 MB C. 5.93 MB D. 7.50 MB
【题目答案】
C
【题目解析】
一个分辨率为 19201080 的位图,共有 19201080=2073600 个像素点,每个像素点需要占用 3 个字节,则该位图占用的内存大小为 2073600*3=6220800 字节。
将字节转换为 MB,得到 6220800/1024/1024=5.93 MB(保留两位小数)。
因此,这幅位图占用的内存大小约为 5.93 MB,选项 C 为正确答案。
【题目描述】
从字母A、B、C、D、E中选出3个字母,可以重复选取。那么共有多少种不同的选法?
A. 10种 B. 20种 C. 100种 D. 125种
【题目答案】
D
【题目解析】
从5个字母中选取3个字母,可以重复选取,相当于每个字母有5种选择的可能性。因此,总的选法数量为 5 * 5 * 5 = 125 种。
所以,共有 125 种不同的选法,选项 D 为正确答案
【题目描述】
给定一个表达式:3 * 4 + 5 / 2,以下哪种表示法是前缀表达式?
A. + * 3 4 / 5 2
B.3 * 4 + 5 / 2
C.3 4 * 5 2 / +
D.* 3 + 4 / 5 2
【题目答案】
A
【题目解析】
- 前缀表达式:+ * 3 4 / 5 2
- 中缀表达式:3 * 4 + 5 / 2
- 后缀表达式:3 4 * 5 2 / +
【题目描述】
阅读程序
#include<iostream>
#include<vector>
using namespace std;
int main() {
string s;
cin >> s;
vector<int> vis(s.length(), 0);
for (int i = s.length() - 2; i >= 0; i--) {
if (s[i + 1] >= '5') {
vis[i] = 1;
s[i]++;
}
}
if (s[0] > '4') {
cout << "1";
for (int i = 0; i < s.length(); i++) cout << "0";
cout << '\n';
}
else {
for (int i = 0; i < s.length(); i++) {
if (vis[i]) {
cout << s[i];
for (int j = i + 1; j < s.length(); j++) cout << "0";
break;
}
else cout << s[i];
}
cout << '\n';
}
}
假设输入的是字符串是数字字符,且长度不超过 1000.请回答下面问题:
1.假设字符串长度为n,则该程序的时间复杂度为()
A.O(n) B.O(n^2) C.O(logn) D.O(n^3)
2.若输入1,该程序输出结果为()
A.1 B.10 C.5 D.3
3.若输入99,该程序输出结果为()
A.99 B.910 C.100 D.10
4.若输入20445,该程序输出结果为()
A.20445 B.21000 C.30000 D.25000
【题目答案】
1.A
2.A
3.C
4.B
【题目解析】
1.时间复杂度为O(n),虽然有一个循环嵌套,但是其实还是遍历这个字符串
2~4.该程序是可以进行很多次四舍五入让这个字符串s代表的数字尽可能的大(数字本身,不是字典序)
2.1不能四舍五入,最后是本身
3.99最后一位四舍五入变成100
4.20445最后一位四舍五入变成20550,第二位四舍五入变成20600,第三位四舍五入变成21000
【题目描述】
完善程序
你有 个长度为 的单词,第 个单词是 。
在一个操作中,你可以把任何一个单词的任何一个位置上的字母改成它相邻的字母,比如:
- 你可以把 'e' 改成 'd' 或 'f'。
- 你只能把 'a' 改成 'b'。
- 你只能把 'z' 改成 'y'。
与 的差异度为使 所需的操作次数,如 "best" 与 "cost" 差异度为 1+10+0+0=111+10+0+0=11。
你要找到 与 (满足 )的差异度的最小值,也就是每一对单词差异度的最小值。
下面这段代码的思路是枚举每对字符串,求他们之间差异度的最小值。
#include<iostream>
using namespace std;
string s[109];
int main() {
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> s[i];
}
int ans = ①;
for (int i = 0; i < n; i++) {
for (int j = ②; j < n; j++) {
int temp = ③;
for (int k = 0; k < m; k++) {
④
}
⑤
}
}
cout << ans << '\n';
return 0;
}
1.①处应填( )
A.0 B.1 C.1e9 D.-1
2.②处应填( )
A.0 B.1 C.i D.i+1
3.③处应填( )
A.0 B.1 C.1e9 D.-1
4.④处应填( )
A.temp+=abs(s[i][j]-s[j][k]);
B.temp+=s[i][j]-s[j][k];
C.temp+=abs(s[i][k]-s[j][k]);
D.temp+=s[i][k]-s[j][k];
5.⑤处应填( )
A.ans=0 B.ans=1e9 C.ans=min(ans,temp) D.ans=temp
【题目答案】
1.C
2.D
3.A
4.C
5.C
【题目解析】
1.ans是存储答案的,要赋值一个很大值
2.j应该从i+1开始
3.temp是存储s[i]和s[j]的差异度的,初始值为0
4.temp加上k下标位置的差异
5.ans和temp取较小值放到ans中