【题目描述】

以下哪个不是计算机的输入设备?

A.键盘 B.鼠标 C.显示器 D.扫描仪

【题目答案】

C.显示器

【题目解析】

键盘、鼠标、扫描仪都是计算机的输入设备,而显示器属于输出设备。


【题目描述】

在位运算操作中,以下哪个操作的优先级最高?

A.按位与(AND) B.按位或(OR) C.按位异或(XOR) D.左移位(<<)

【题目答案】

D

【题目解析】

位运算操作中,左移位(<<)操作的优先级最高,然后依次是按位与(AND)、按位异或(XOR)、

按位或(OR)。


【题目描述】

将二进制数1101转换为八进制,结果为:

A. 5 B. 11 C. 13 D. 15

【题目答案】

D

【题目解析】

要将二进制数转换为八进制数,可以将二进制数按照每三位进行分组,再将每组二进制数转换为对应的八进制数。从右往左数,每三位为一组,从高位开始转换。


【题目描述】

假设我们使用4位二进制表示有符号整数,其中最高位为符号位,0表示正数,1表示负数。请问以下选项中,哪个是十进制数-5的补码表示?

A. 0101 B. 1010 C. 1111 D. 1011

【题目答案】

D

【题目解析】

原码是最基本的表示方式,取最高位作为符号位,其余位表示数值的绝对值。对于负数,补码表示方式是在其原码的基础上将所有位取反,然后再加1。

-5的原码为:1101

对原码进行按位取反:1010

再加1得到补码:1011

因此,十进制数-5的补码表示为1011,选项D为正确答案。


【题目描述】

有多少种从5个不同元素中取出3个元素的组合方式?

A. 5 B. 7 C. 9 D. 10

【题目答案】

D

【题目解析】

从5个不同的元素中选出3个元素的组合方式数为C(5,3),即从5个元素中选出3个元素组成的组合数量。使用组合计算公式C(n,m)=n!/(m!*(n-m)!),可以得到:

C(5,3) = 5! / (3! * (5-3)!) = 10


【题目描述】

完善程序

给出一个n长度的只包含字符‘B'和’W‘的字符串(下标从0开始),每次将连续的k个字符全部设为’B‘(不论之前是否是'B'),下面代码是求解最少使用的次数。

#include<iostream>
using namespace std;
char s[1009];
int main() {
	int n, k;
	cin >> n >> k;
	cin >> ①;
	int ans = ②;
	for (int i = ③; i < n; i++) {
		if (s[i] == 'W') continue;
		ans++;
		i += ④;
	}
	cout << ⑤ << '\n';
}

1.①处应填( )

A.n B.k C.s D.s+1

2.②处应填( )

A.0 B.n C.k D.k-1

3.③处应填( )

A.0 B.1 C.n D.k

4.④处应填( )

A.1 B.n C.k D.k-1

5.⑤处应填( )

A.0 B.ans C.ans+1 D.ans+n

【题目答案】

1.C

2.A

3.C

4.D

5.B

【题目解析】

1.输入字符串s,从0开始存储

2.ans存储答案,开始为0

3.字符串是从0开始存储的,因此i的初始值为0

4.如果s[i]为B,则要将[i,i+k-1]全部变为’B‘,因此i要加上k-1

5.ans是存储答案的,输出答案即可


【题目描述】

阅读程序

1 #include<iostream>
 2 using namespace std;
 3 char s[5][5];
 4 int main() {
 5      int n;
 6      cin >> n;
 7      while (n--) {
 8              for (int i = 1; i <= 3; i++) {
 9                      for (int j = 1; j <= 3; j++) {
10                              cin >> s[i][j];
11                      }
12              }
13              bool flag = false;
14              for (int i = 1; i <= 3; i++) {
15                      if (s[i][1] == s[i][2] && s[i][2] == s[i][3] && s[i][1] != '.') {
16                              cout << s[i][1] << '\n';
17                              flag = true;
18                              break;
19                      }
20                      if (s[1][i] == s[2][i] && s[2][i] == s[3][i] && s[1][i] != '.') {
21                              cout << s[1][i] << '\n';
22                              flag = true;
23                              break;
24                      }
25              }
26              if (!flag && s[1][1] == s[2][2] && s[2][2] == s[3][3] && s[1][1] != '.') {
27                      cout << s[1][1] << '\n';
28                      flag = true;
29              }
30              if (!flag && s[1][3] == s[2][2] && s[2][2] == s[3][1] && s[2][2] != '.') {
31                      cout << s[1][3] << '\n';
32                      flag = true;
33              }
34              if (!flag) cout << "DRAW" << '\n';
35      }
36      return 0;
37 }

请回答下面问题:

1.假设字符串长度为n,则该程序的时间复杂度为()

A.O(n) B.O(n^2) C.O(logn) D.O(n^3)

2.若输入

1
+X+
OXO
OX.

该程序输出结果为()

A.X B.O C.+ D.DRAW

3.若输入

1
O+.
+OX
X+O

该程序输出结果为()

A.X B.O C.+ D.DRAW

4.若输入

1
.XO
OX.
+++

该程序输出结果为()

A.X B.O C.+ D.DRAW

5.若输入

1
O.+
X.O
+..

该程序输出结果为()

A.X B.O C.. D.DRAW

【题目答案】

1.A

2.A

3.B

4.C

5.D

【题目解析】

1.时间复杂度为O(9*n),其实就是O(n)

2~5该程序是判断是否有三个相同的字符(不包括'.'字符)连成一条直线(可以横、竖、斜),因此2~5依次选择ABCD

0 comments

No comments so far...