5297:[GESP202603三级] 客观题
文件提交:无需freopen
内存限制:128 MB
时间限制:1.000 S
评测方式:文本裁判
金币值:
命题人:
提交:8
解决:0
题目描述
## 一、单选题(每题 2 分,共 30 分)
**第 1 题** 如果字符变量 `_1` 的值是字符$1$ ,那么 `(int)_1` 的值是? ( )
- $1$
- $-1$
- $49$
- $+1$ 或者 $-1$
**第 2 题** $a,b$ 是整型变量,各自有互不相同的初始值。下列程序实现了什么效果 ( )
```cpp
01 a = a^b;
02 b = a^b;
03 a = a^b;
```
- $a,b$ 的值从始至终都没有改变。
- $a,b$ 的值实现了互换。
- $a,b$ 的值互换了以后,又还回去了,相当于没有变化。
- $a,b$ 的值最后和原值不一样,没有任何意义。
**第 3 题** 关于下列正确的程序段,说法正确的是 ( )
```cpp
01 char str1[] = "Hello";
02 char str2[] ={'H','e','l','l','0'};
```
- 字符数组 `str1` 和 `str2` 完全相同
- ```cpp
01 cout << str1 << endl;
02 cout << str2 << endl;
```
这段程序将输出不同的结果。
- 字符数组 `str1` 和 `str2` 不相等。
- 这两个赋值方式完全相同。
**第 4 题** 关于以下程序段,说法正确的是 ( )
```cpp
01 int x=10;
02 cout<<(x++) + (++x)<< endl;
```
- `C++11` 标准中,这是未定义⾏为,不同的环境有可能出现不同的结果
- $22$
- $21$
- $20$
**第 5 题** $8$ 位二进制下,十进制数 $-15$ 的补码是 ( )
- $11110000$
- $10001111$
- $10010000$
- $11110001$
**第 6 题** 三进制数 $2102_{(3)}$ 转换成十进制是: ( )
- $63$
- $65$
- $67$
- $69$
**第 7 题** 二进制数 $10110101$ 是某数的$8$ 位补码,该数的十进制是 ( )
- $-73$
- $-75$
- $-77$
- $75$
**第 8 题** 已知 `unsigned char c = 0xOF;` (十六进制 `0F = 二进制00001111`),执行 `c = c << 3;` 后,`c` 的十进制值是 ( )
- $64$
- $72$
- $80$
- $120$
**第 9 题** 补码的情况下,关于按位取反运算,用笔计算的情况下,以下说法错误的是: ( )
- `~5` 的结果是 $-6$ (`int` 类型,$32$ 位)
- `~0` 的结果是 $0$ (`int` 类型,$32$位)
- `~(-3)` 的结果是 $2$ (`int` 类型,$32$ 位)
- `~8` 的结果是 $-9$ (`int` 类型,$32$位)
**第 10 题** 执行以下 `C++` 代码后,`sub` 的值是 ( )
```cpp
01 string str = "GESP2026";
02 string sub = str.substr(4, 2);
```
- $20$
- $02$
- $2026$
- $026$
**第 11 题** 执行以下代码后,输出结果是: ( )
```cpp
01 int arr[] = {5, 10, 15, 20, 25, 30};
02 int count = sizeof(arr) / sizeof(arr[0]);
03 cout << count;
```
- $4$
- $6$
- $24$
- $30$
**第 12 题** 执行以下代码后,输出结果是: ( )
```cpp
01 char s[10] = "abcde";
02 int a = sizeof(s) / sizeof(s[0]);
03 int b = strlen(s);
04 cout << a - b;
```
- $4$
- $5$
- $6$
- $10$
**第 13 题** 以下问题中,最不适合用枚举法解决的是: ( )
- 找出 $1 \sim 100$ 之间所有能被 $7$ 整除的数
- 找出 $100 \sim 200$ 之间的所有质数
- 计算 $1+2+3+...+1000$ 的和
- 找出三位数中个位、十位、百位数字之和等于 $10$ 的数
**第 14 题** 用枚举法解决“鸡兔同笼问题:头共 $35$ 个,脚共 $94$ 只,求鸡和兔的数量”,以下枚举逻辑最合理的是:( )
- 枚举鸡的数量 `x` ($0 \sim 35$),兔的数量 `y=35-x`,判断 `2*x+4*y== 94`
- 枚举兔的数量 `y`($0 \sim 94$),鸡的数量 `x=35-y`,判断 `2*x+ 4*y== 94`
- 枚举所有整数 `x`($0-100$)和 `y` ($0-100$),判断 `x+y==35 &&2*x+4*y==94`
- 枚举脚的总数 `sum` ($0 \sim 94$),判断 `sum == 94`
**第 15 题** 模拟“字符串加密”:规则为“每个字符 `ASCII` 码 $+3$,若超过`z`($122$)则从 `a` 重新开始”,以下代码中正确的条件判断是 ( )
```cpp
01 for (int i = 0; i < str.length(); i++) {
02 // 需补充条件:
03 _______________________
04 else {
05 str[i] += 3;
06 }
07 }
```
- `if (str[i]> 122) str[i] = str[i] + 3 - 26;`
- `if (str[i] > 122) str[i] = str[i] - 26;`
- `if (str[i] + 3 > 122) str[i] = str[i] - 23;`
- `if (str[i] + 3 > 'z') str[i] = 'a' + (str[i] + 3 - 'z') - 1;`
## 二、判断题(每题 2 分,共 20 分)
**第 1 题** 定义 `int arr[5] = {1,2,3};`,则 `arr[3]` 的值为 $0$, `arr[5]` 是合法下标。
- 正确
- 错误
**第 2 题** 定义 `double arr[10];`,未手动初始化时,数组中所有元素的默认值为 `0.0`。
- 正确
- 错误
**第 3 题** 定义 `int arr[] = {1,2,3};`则 `sizeof(arr)` 的结果为 $12$ (`int` 占 $4$ 字节)。
- 正确
- 错误
**第 4 题** 下面的流程图是用来求`1+2+3+...+10` 的和。
请判断:这个流程图的逻辑正确还是错误?

- 正确
- 错误
**第 5 题** 下面流程图的功能是计算 $5$ 对 $2$ 取余数,输出结果为 $1$。

- 正确
- 错误
**第 6 题** 已知大写字符 $A$ 的 `ASCII`编码的十六进制表示为 `0x41`,计算字符 `m` 的 `ASCII` 编码的八进制表示为 $155$
(八进制)。
- 正确
- 错误
**第 7 题** 在 `C++` 位运算中,各种不同的运算符有优先级的区分,使用括号能够解决优先级的问题。
- 正确
- 错误
**第 8 题** 由于在 $0 \sim -255$ 范围内,`char` 类型和 `int` 类型可以互换,因此在这里 `x` 和 `y` 相等。
```cpp
01 char x='1';
02 int y=1;
```
- 正确
- 错误
**第 9 题** 在 `C++` 语言中,表达式`((0xf0+0x15)==255)` 的值为 `true`。
- 正确
- 错误
**第 10 题** 如果 `a` 为 `int` 类型的变量,且 `a` 的二进制最低位为 $0$,则表达式 `((a &3&1)==0)` 的值为 `true`。
- 正确
- 错误