Initial commit: C++ courseware

This commit is contained in:
xiaolinquan committed 2026-11-05 22:51:02 +08:00
commit 4a4ee7c287
1789 files changed
+373489

No files matched your search

@@ -0,0 +1,37 @@
### **C++ 算术与关系运算符 课后习题 - 答案**
#### **一、 填空题**
1. `/` , `%`
2. `bool`
3. 先变,再用
4. 先用,再变
5. `score = score - 10;`
6. 乘法 (`*`) , 加法 (`+`) , 关系 (`>`)
7. `==` , `=`
#### **二、 单项选择题**
1. **C**. 整数除法舍弃小数,`13 / 5` 的商是 `2`。
2. **A**. `13` 除以 `5` 商 `2` 余 `3`。
3. **B**. 前置自增,先将 `x` 变为 `11`,再输出新值 `11`。
4. **A**. 后置自增,先输出 `x` 的原值 `10`,然后 `x` 的值才变为 `11`。
5. **C**. 前置自减,`x` 先从 `5` 变为 `4`,然后将新值 `4` 赋给 `y`。
6. **C**. 后置自减,先将 `x` 的原值 `5` 赋给 `y`,然后 `x` 自身的值从 `5` 变为 `4`。
7. **C**. 先算术后关系。`5 + 2` 得 `7`,`8 - 4` 得 `4`。表达式变为 `7 > 4`,结果为 `true`,输出 `1`。
8. **B**. `score /= 10;` 等价于 `score = score / 10;`,即 `100 / 10`,结果是 `10`。
9. **C**. 不等于的关系运算符是 `!=`。
10. **B**. `a++` 是后置自增,先用 `a` 的原值 `1` 参与运算,`1 + 2` 结果为 `3`。运算结束后,`a` 的值变为 `2`。
#### **三、 判断题**
1. √ (两个整数相除,结果只取整数部分。)
2. √ (当不把它们作为表达式的一部分,而是独立作为一条语句时,两者都只是让变量自增1,效果相同。)
3. × (根据讲义内容,`%` 主要用于整数运算。)
4. × ( `==` 是判断相等,返回 `bool` 值; `=` 是赋值,改变变量的值。)
5. × (这是后置 `++`,遵循“先用后变”原则,应是先把 `x` 的旧值赋给 `y`,然后 `x` 再加1。)
6. √ (这是 `cout` 对于 `bool` 类型的默认输出规则。)
7. √ (`10 >= 20` 这个关系不成立,结果是 `false`,输出为 `0`。)
8. √ (讲义中明确指出“非零即为真”。)
9. √ (括号用于强制改变运算优先级,是最高的。)
10. √ ( `b = a++` 是后置运算,先将 `a` 的原值 `10` 赋给 `b`,然后 `a` 自身的值变为 `11`。 )
@@ -0,0 +1,91 @@
### **C++ 算术与关系运算符 课后习题**
姓名: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
#### **一、 填空题**
1. 两个整数相除,只会保留整数部分而舍弃小数的运算符是 \_\_\_\_\_\_\_\_\_\_;而计算整数除法余数的运算符是 \_\_\_\_\_\_\_\_\_\_。
2. 在C++中,专门用来存储 `true` (真) 和 `false` (假) 这种值的类型是 \_\_\_\_\_\_\_\_\_\_ 类型。
3. 前置自增 `++a` 的运算口诀是“\_\_\_\_\_\_\_\_\_\_,\_\_\_\_\_\_\_\_\_\_”,即先改变变量的值,再使用新值参与表达式运算。
4. 后置自增 `a++` 的运算口诀是“\_\_\_\_\_\_\_\_\_\_,\_\_\_\_\_\_\_\_\_\_”,即先使用变量的旧值参与表达式运算,再改变变量的值。
5. `score -= 10;` 这种写法叫做复合赋值,它和普通写法 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 是等价的。
6. 在 `3 + 4 > 2 * 3` 这个表达式中,计算机会先计算 \_\_\_\_\_\_\_\_\_\_ 运算,再计算 \_\_\_\_\_\_\_\_\_\_ 运算,最后才进行 \_\_\_\_\_\_\_\_\_\_ 运算。
7. 请务必区分:用于**判断**两个值是否相等的运算符是 \_\_\_\_\_\_\_\_\_\_,而用于**赋值**的运算符是 \_\_\_\_\_\_\_\_\_\_。
#### **二、 单项选择题**
( &nbsp; ) 1. 执行 `int a = 13, b = 5; cout << a / b;` 后,屏幕上会显示什么?
A. 3 &emsp; B. 2.6 &emsp; C. 2 &emsp; D. 8
( &nbsp; ) 2. 执行 `int a = 13, b = 5; cout << a % b;` 后,屏幕上会显示什么?
A. 3 &emsp; B. 2.6 &emsp; C. 2 &emsp; D. 0
( &nbsp; ) 3. 阅读以下代码,其输出结果是什么?
```cpp
int x = 10;
cout << ++x;
```
​ A. 10 &emsp; B. 11 &emsp; C. 9 &emsp; D. 无法确定
( &nbsp; ) 4. 阅读以下代码,其输出结果是什么?
```cpp
int x = 10;
cout << x++;
```
​ A. 10 &emsp; B. 11 &emsp; C. 9 &emsp; D. 无法确定
( &nbsp; ) 5. 阅读以下代码,执行后 `y` 的值是多少?
```cpp
int x = 5;
int y = --x;
```
​ A. 5 &emsp; B. 6 &emsp; C. 4 &emsp; D. 3
( &nbsp; ) 6. 阅读以下代码,执行完毕后 `x` 的值是多少?
```cpp
int x = 5;
int y = x--;
```
​ A. 5 &emsp; B. 6 &emsp; C. 4 &emsp; D. 3
( &nbsp; ) 7. `cout << (5 + 2 > 8 - 4);` 这行代码的输出结果是?
A. true &emsp; B. false &emsp; C. 1 &emsp; D. 0
( &nbsp; ) 8. `int score = 100; score /= 10;` 执行后,变量 `score` 的值是多少?
A. 100 &emsp; B. 10 &emsp; C. 90 &emsp; D. 110
( &nbsp; ) 9. “判断变量 `a` 的值是否不等于 `b`”,应该使用哪个表达式?
A. `a =! b` &emsp; B. `a <> b` &emsp; C. `a != b` &emsp; D. `a = b`
( &nbsp; ) 10. `int a = 1, b = 2; cout << (a++ + b);` 这行代码的输出结果是?
A. 2 &emsp; B. 3 &emsp; C. 4 &emsp; D. 5
#### **三、 判断题 (对的打“√”,错的打“×”)**
1. `10 / 4` 在C++整型计算中的结果是 `2`。 ( &nbsp; )
2. `a++` 和 `++a` 作为独立的一行语句时,例如 `a++;` 和 `++a;`,它们的效果是完全一样的。 ( &nbsp; )
3. 取余(取模)运算符 `%` 可以用于 `double` 类型的变量。 ( &nbsp; )
4. 在C++中,关系运算符 `==` 和赋值运算符 `=` 的作用是相同的。 ( &nbsp; )
5. 在表达式 `int y = x++;` 中,是先把 `x` 的值加1,然后再把新值赋给 `y`。 ( &nbsp; )
6. 当 `cout` 一个 `bool` 类型的值时,`true` 会显示为 `1`,`false` 会显示为 `0`。 ( &nbsp; )
7. 以下代码执行后,会输出 `0`。 ( &nbsp; )
```cpp
int a = 10, b = 20;
cout << (a >= b);
```
8. 在C++中,只要一个数值不是 `0`,当它被用在逻辑判断中时,就会被当作 `true`。 ( &nbsp; )
9. 运算符 `()` 的优先级在所有运算符中是最高的。 ( &nbsp; )
10. 以下代码执行完毕后,变量 `a` 的最终值是 `11`。 ( &nbsp; )
```cpp
int a = 10;
int b = a++;
```
@@ -0,0 +1,37 @@
### **C++ 逻辑运算符 课后习题 - 答案**
#### **一、 填空题**
1. `&&` , `||` , `!`
2. 全真才为真
3. 一真即为真
4. `false` , `true`
5. 短路求值 (或 短路)
6. `!` (非) , `&&` (与) , `||` (或)
7. 算 关 与
#### **二、 单项选择题**
1. **D**. `(5 > 3)` 为 `true`,`(2 < 1)` 为 `false`。`true && false` 的结果是 `false`,输出为 `0`。
2. **A**. `(10 == 9)` 为 `false`,`(3 != 4)` 为 `true`。`false || true` 的结果是 `true`,输出为 `1`。
3. **B**. `-1` 是非零数,被视为 `true`。`!true` 的结果是 `false`,即 `0`。
4. **C**. 题干描述了两个并列的条件,应该用 `||` 连接。“能被4整除但不能被100整除”是 `year % 4 == 0 && year % 100 != 0`,“能被400整除”是 `year % 400 == 0`。
5. **B**. `a` 是 `1` (true),`b` 是 `0` (false)。`true || false` 的结果是 `true`,输出为 `1`。
6. **A**. 因为 `x > 1` (即 `5 > 1`) 的结果是 `true`,根据 `||` 的短路规则,后面的 `(y++ > 10)` 不会再执行,所以 `y` 的值保持 `10` 不变。
7. **A**. 因为 `x > 1` (即 `0 > 1`) 的结果是 `false`,根据 `&&` 的短路规则,后面的 `(y++ > 10)` 不会再执行,所以 `y` 的值保持 `10` 不变。
8. **D**. 一个数要么大于等于20,要么小于20,这两个条件覆盖了所有情况,所以用 `||` 连接起来结果永远为 `true`。
9. **B**. `!` 优先级最高,`!true` 变为 `false`。表达式变为 `false || false && true`。`&&` 优先级高于 `||`,先算 `false && true` 结果为 `false`。最后表达式变为 `false || false`,结果为 `false`,即 `0`。
10. **D**. `a > 1` (true) `&&` `a < 10` (false),`true && false` 结果为 `false`。其他选项结果都为 `true`。
#### **三、 判断题**
1. √ ( `&&` 的优先级高于 `||`,就像乘法高于加法一样。)
2. √ (当 `a` 为0时,`!a` 为 `true`,`a == 0` 也为 `true`。当 `a` 非0时,`!a` 为 `false`,`a == 0` 也为 `false`。)
3. × (它会先算 `5 < x`,结果是 `true`(1) 或 `false`(0),然后再拿这个 `1` 或 `0` 去和 `10` 比较,永远为 `true`。正确的写法是 `x > 5 && x < 10`。)
4. × (关系运算符的优先级高于逻辑运算符。先判断大小关系,再进行逻辑组合。)
5. × (这是 `||` 的短路特性,只要 `A` 为 `true`,整个表达式就确定为 `true`,无需再计算 `B`。)
6. √ (`a > b` 即 `1 > 2` 为 `false`。`c > b` 即 `3 > 2` 为 `true`。`false || true` 结果为 `true`,输出 `1`。)
7. × (`a` 是 `0`,即 `false`。对于 `&&` 运算,因为短路,`b++` 不会执行,`b` 的值仍然是 `10`。)
8. √ (`0` 被视为 `false`,`!false` 的结果是 `true`,即 `1`。)
9. √ (`true && false` 的结果是 `false`,`cout` 输出 `bool` 类型的 `false` 时会显示 `0`。)
10. √ (这正是逻辑或 `||` 的定义。)
@@ -0,0 +1,81 @@
### **C++ 逻辑运算符 课后习题**
姓名: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
#### **一、 填空题**
1. C++ 中用来表示逻辑“与”的运算符是 \_\_\_\_\_\_\_\_\_\_,表示逻辑“或”的运算符是 \_\_\_\_\_\_\_\_\_\_,表示逻辑“非”的运算符是 \_\_\_\_\_\_\_\_\_\_。
2. 逻辑与 `&&` 的运算规则是:两个条件必须都为 `true`,结果才为 `true`,这叫做“\_\_\_\_\_\_\_\_\_\_,一假即为假”。
3. 逻辑或 `||` 的运算规则是:只要有一个条件为 `true`,结果就为 `true`,这叫做“\_\_\_\_\_\_\_\_\_\_,全假才为假”。
4. 在C++的逻辑判断中,整数 `0` 会被当作 \_\_\_\_\_\_\_\_\_\_ 来看待,而任何非零的整数(如 `5`、`-10`)都会被当作 \_\_\_\_\_\_\_\_\_\_ 来看待。
5. 在 `A && B` 这个表达式中,如果 `A` 的值为 `false`,程序就不会再去计算 `B` 的值,这种现象叫做 \_\_\_\_\_\_\_\_\_\_。
6. 运算符的优先级决定了计算顺序,逻辑运算符的优先级从高到低是:\_\_\_\_\_\_\_\_\_\_ > \_\_\_\_\_\_\_\_\_\_ > \_\_\_\_\_\_\_\_\_\_。
7. 运算符优先级顺序的口诀是:非 > \_\_\_\_\_\_ > \_\_\_\_\_\_ > \_\_\_\_\_\_ > 或。
#### **二、 单项选择题**
( &nbsp; ) 1. 执行 `cout << ((5 > 3) && (2 < 1));` 这行代码,屏幕上会输出什么?
A. true &emsp; B. false &emsp; C. 1 &emsp; D. 0
( &nbsp; ) 2. 执行 `cout << ((10 == 9) || (3 != 4));` 这行代码,屏幕上会输出什么?
A. 1 &emsp; B. 0 &emsp; C. true &emsp; D. false
( &nbsp; ) 3. 表达式 `!(-1)` 的计算结果是什么?
A. 1 &emsp; B. 0 &emsp; C. -1 &emsp; D. 语法错误
( &nbsp; ) 4. “年份 `year` 是闰年”的条件是“能被4整除但不能被100整除,或者能被400整除”。下列哪个表达式是正确的?
A. `year % 4 == 0 && year % 100 != 0 && year % 400 == 0`
B. `year % 4 == 0 || year % 100 != 0 && year % 400 == 0`
C. `(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)`
D. `year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)`
( &nbsp; ) 5. 阅读以下代码,其输出结果是什么?
```cpp
int a = 1, b = 0;
cout << (a || b);
```
​ A. 0 &emsp; B. 1 &emsp; C. 2 &emsp; D. a
( &nbsp; ) 6. 阅读以下代码,执行后变量 `y` 的值是多少?
```cpp
int x = 5, y = 10;
bool result = (x > 1) || (y++ > 10);
```
​ A. 10 &emsp; B. 11 &emsp; C. 5 &emsp; D. 1
( &nbsp; ) 7. 阅读以下代码,执行后变量 `y` 的值是多少?
```cpp
int x = 0, y = 10;
bool result = (x > 1) && (y++ > 10);
```
​ A. 10 &emsp; B. 11 &emsp; C. 0 &emsp; D. 1
( &nbsp; ) 8. 下列表达式中,结果一定是 `true` (或 `1`) 的是?(假设 `x` 为 `int` 类型变量)
A. `x > 0 && x < 0` &emsp; B. `x > 100` &emsp; C. `!(x > 10)` &emsp; D. `x >= 20 || x < 20`
( &nbsp; ) 9. 根据运算符优先级,表达式 `!true || false && true` 的结果是?
A. 1 &emsp; B. 0 &emsp; C. 无法计算 &emsp; D. true
( &nbsp; ) 10. `int a = 10;`,下列哪个表达式的结果是 `false` (或 `0`) ?
A. `a > 5` &emsp; B. `a > 5 || a < 1` &emsp; C. `! (a == 5)` &emsp; D. `a > 1 && a < 10`
#### **三、 判断题 (对的打“√”,错的打“×”)**
1. 逻辑运算符 `&&` 的优先级比 `||` 要高。 ( &nbsp; )
2. 对于 `int` 型变量 `a`,表达式 `!a` 和 `a == 0` 在逻辑判断上是等价的。 ( &nbsp; )
3. 在 C++ 中,`5 < x < 10` 这个表达式可以正确地判断 `x` 是否在 5 和 10 之间。 ( &nbsp; )
4. 关系运算符(如 `>`、`==`)的优先级要低于逻辑运算符(如 `&&`)。 ( &nbsp; )
5. 在表达式 `A || B` 中,如果 `A` 的计算结果为 `true`,那么计算机就必须再计算 `B` 的值才能确定最终结果。 ( &nbsp; )
6. 以下代码执行后,会输出 `1`。 ( &nbsp; )
```cpp
int a = 1, b = 2, c = 3;
cout << (a > b || c > b);
```
7. 以下代码执行后,变量 `b` 的值会变成 `11`。 ( &nbsp; )
```cpp
int a = 0, b = 10;
bool result = a && (b++);
```
8. 表达式 `!0` 的计算结果是 `1`。 ( &nbsp; )
9. `cout << (true && false);` 的输出结果是 `0`。 ( &nbsp; )
10. 当我们想表达“两个条件中至少有一个满足”时,应该使用 `||` 运算符。 ( &nbsp; )
@@ -0,0 +1,28 @@
### **参考答案**
#### **一、 填空题**
1. `&&`, 括号 `()`
2. `(x % 3 == 0) && (x % 2 != 0) && (x % 5 != 0)`
3. `is_blue && price < 50`
4. `(x >= 10 && x <= 20) || (x >= 30 && x <= 40)`
5. `!is_ready`
6. `((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)`
7. `(A && B) || (A && C) || (B && C)`
8. `false`
9. `!(x == 10)`
#### **二、 单项选择题**
1. **B**. "等级和红宝石"是一个整体,"VIP和蓝宝石"是另一个整体,两者是“或者”关系。
2. **B**. 因为 `chinese > 90` (88 > 90) 是 `false`,导致 `(math > 90 && chinese > 90)` 整体为 `false`。
3. **C**. 选项A, B, D描述的都是“可以举办活动”的条件。选项C描述的是“**不能**举办活动”的条件,所以是错误的。
4. **A**. `!(true && false)` -> `!false` -> `true`。 `(false || !true)` -> `(false || false)` -> `false`。最终 `true || false` -> `true`。
5. **C**. "数学或者英语100分"是一个整体条件,需要用括号括起来,再与“作业写完”进行`&&`运算。
7. **D**. 因为 `x > 5` (5 > 5) 是 `false`,导致整个`&&`表达式为`false`。其他选项均为`true`。
8. **B**. “不大于10”就是“小于等于10”的意思。
#### **三、 构建逻辑表达式**
1. `login_ok || token_ok`
2. `!is_special && (is_vip || amount > 200)`
@@ -0,0 +1,80 @@
### **C++ 逻辑运算符构建实例 **
姓名: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
#### **一、 填空题**
1. 当一个判断条件里既有 `&&` 又有 `||` 时,计算机会先算 \_\_\_\_\_\_\_\_\_\_\_\_\_部分。如果我们想改变运算顺序,可以使用 \_\_\_\_\_\_\_\_\_\_\_\_\_改变运算优先级。
2. 一个数字 `x` 要满足“是3的倍数,但不是2的倍数,也不是5的倍数”,这个条件写成逻辑表达式为:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
3. 小明想买一个玩具,条件是:玩具是蓝色的(结果储存在布尔变量`is_blue`中),并且价格(`price`)低于50元。这个购买条件可以写成表达式:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
4. 判断一个数 `x` 是否在区间 `[10, 20]` 或者 `[30, 40]` (包括边界)内,表达式可以写成:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
5. 如果布尔变量 `is_ready` 代表“准备就绪”,那么判断“**未**准备就绪”的最简洁表达式是 \_\_\_\_\_\_\_\_\_\_,而不是 `is_ready == false`。
6. 闰年的判断条件是:年份(`year`)能被4整除但不能被100整除,**或者**能被400整除。这个完整的表达式为: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
7. 如果 `A`, `B`, `C` 三个条件中**至少有两个**成立,那么表达式就可以写成:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。(提示:AB成立,或者AC成立,或者BC成立)
8. 已知 `bool a = true, b = false;`,那么表达式 `a && b` 的结果是 \_\_\_\_\_\_\_\_ (填`true`或`false`)。
9. 要判断“x不等于10”,我们可以写成 `x != 10`,也可以用逻辑非运算符写成 \_\_\_\_\_\_\_\_\_\_\_\_\_。
#### **二、 单项选择题**
( ) 1. 某游戏进入隐藏关卡的条件是:玩家等级(`level`)大于50 **并且** 拥有“红宝石”(`has_red_gem`),**或者** 玩家是VIP(`is_vip`)**并且** 拥有“蓝宝石”(`has_blue_gem`)。下面哪个表达式是正确的?
A. `level > 50 && (has_red_gem || is_vip) && has_blue_gem`
B. `(level > 50 && has_red_gem) || (is_vip && has_blue_gem)`
C. `level > 50 || (has_red_gem && is_vip) || has_blue_gem`
D. `level > 50 && has_red_gem && is_vip && has_blue_gem`
( ) 2. 学校评选“优秀少先队员”的条件是:数学成绩(`math`)和语文成绩(`chinese`)都在90分以上,并且品德成绩(`conduct`)不能低于85分。小明的成绩是 `math=95, chinese=88, conduct=90`。判断小明是否符合条件的表达式 `(math > 90 && chinese > 90) && conduct >= 85` 的结果是?
A. true (1) B. false (0)
( ) 3. 一个机器人活动需要满足以下所有条件:天气晴朗(`is_sunny`),温度(`temp`)在15到25度之间,并且风力(`wind`)小于3级。下面哪个表达式是**错误**的?
A. `is_sunny && (temp >= 15 && temp <= 25) && wind < 3`
B. `is_sunny && temp >= 15 && temp <= 25 && wind < 3`
C. `!is_sunny || temp < 15 || temp > 25 || wind >= 3`
D. `is_sunny && temp >= 15 && !(temp > 25) && wind < 3`
( ) 4. 给定 `bool a = true; bool b = false; bool c = true;`,表达式 `!(a && b) || (b || !c)` 的结果是?
A. true (1) B. false (0)
( ) 5. 小红的妈妈说:“如果你数学**或者**英语考了100分,**并且**作业都写完了,我们周末就去游乐园。” 假设 `math_ok` 代表数学100分,`eng_ok` 代表英语100分,`hw_done` 代表作业写完。下面哪个表达式正确地表达了去游乐园的条件?
A. `math_ok || eng_ok && hw_done`
B. `math_ok && eng_ok || hw_done`
C. `(math_ok || eng_ok) && hw_done`
D. `math_ok && (eng_ok || hw_done)`
( ) 6. 已知 `int x = 5, y = 10;`,下面哪个表达式的值是 `false`?
A. `x < 10 && y > 5`
B. `x == 5 || y == 5`
C. `!(x > y)`
D. `x > 5 && y == 10`
( ) 7. 表达式 `!(x > 10)` 和下面哪个表达式是等价的?
A. `x < 10`
B. `x <= 10`
C. `x != 10`
D. `x > 10`
#### **三、 构建逻辑表达式**
根据以下描述,使用给定的变量名写出对应的 C++ 逻辑表达式。
1. 一个账号可以登录,需要满足以下条件之一:
* (1) 用户名和密码正确(结果储存在 `login_ok` 的布尔变量中)。
* (2) 用户通过了手机验证(结果储存在 `token_ok` 的布尔变量中)。
**写出表达式:** \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
2. 一个商品可以享受折扣,条件是:
* 商品**不是**“特价商品” (`is_special` 为 `false`)
* **并且** (顾客是VIP会员(`is_vip`) **或者** 消费金额(`amount`)大于200元)。
* 提示:`is_special` 与 `is_vip` 都是布尔变量
**写出表达式:** \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。