#t228. 收集瓶盖赢大奖
收集瓶盖赢大奖
收集瓶盖赢大奖
题目描述
某饮料公司最近推出了一个“收集瓶盖赢大奖”的活动:如果你拥有个印有幸运、或个印有鼓励的瓶盖,就可以兑换一个神秘大奖。
现分别给出你拥有的印有幸运和鼓励的瓶盖数,判断是否可以去兑换大奖。
输入格式
一行,包含两个整数,分别是印有“幸运”和“鼓励”的瓶盖数,用一个空格隔开。
输出格式
一行。若可以兑换大奖,输出,否则输出。
样例输入
11 19
样例输出
1
提示
一、|| 是「或者」
两边只要有一个成立,整个条件就成立:
int x = 3;
if (x == 3 || x == 5) {
printf("hit\n");
}
真值表:
| 左边 | 右边 | || 结果 |
|---|---|---|
| 真 | 真 | 真 |
| 假 | ||
| 假 | 真 | |
| 假 | ||
二、和 && 的对比
| 运算符 | 读作 | 什么时候为真 |
|---|---|---|
&& |
并且 | 两边都真 |
|| |
或者 | 至少一边真 |
判断「在区间内」用 &&(同时满足上下界);判断「等于几个值中的某一个」用 ||。
三、短路求值
左边为真时,右边不再计算。所以 x == 0 || 10 / x > 2 这种写法是安全的——x 为 0 时不会去做除法。
四、常见错误
- 用单个
|(那是位运算,两边都会算,结果也不同); - 用
or; - 该用
&&的地方用了||:x > 0 || x < 10对任何数都成立。
五、自检
把条件的四种真假组合各代一组数据进去,看结果是否符合预期。
- 兑奖条件是「幸运 ≥10 或者 鼓励 ≥20」,用
||连接两个比较。 - 输出 1 或 0。
自查:用
11 19(幸运够)和9 20(鼓励够)分别验证;两个都不够时应输出 0。