#t227. 判断是否为两位数
判断是否为两位数
判断是否为两位数
题目描述
判断一个正整数是否是两位数(即大于等于 且小于等于 )。
输入格式
一个正整数,不超过 。
输出格式
一行。若该正整数是两位数,输出 ,否则输出 。
样例输入
54
样例输出
1
提示
一、&& 是「并且」
两个条件都要成立,整个条件才成立:
int score = 85;
if (score >= 60 && score <= 100) {
printf("pass\n");
}
真值表:
| 左边 | 右边 | && 结果 |
|---|---|---|
| 真 | 真 | |
| 假 | 假 | |
| 假 | 真 | |
| 假 | ||
二、绝对不能连写
数学里写 60 <= score <= 100,C++ 里这么写是错的:
60 <= score <= 100 // 错!
C++ 从左往右算:先算 60 <= score,得到 true(1)或 false(0),再拿这个 0/1 去和 100 比——0 <= 100 和 1 <= 100 永远为真。所以这个条件永远成立,不管你输入什么。
正确写法必须把两个比较都写全,用 && 连起来:
score >= 60 && score <= 100
三、&& 两边各是一个完整的比较
a && b 里,a 和 b 都必须是能判断真假的表达式,不能只写一半。
四、短路求值
如果左边已经是假,右边根本不会计算。这在后面有用(比如 i < n && a[i] > 0,左边不成立就不会去访问越界的 a[i])。
五、常见错误
-
写成
60 <= score <= 100; -
用
and(那是 Python 的写法); -
用中文的
&&; -
两个条件之间用逗号。
-
「两位数」是一个区间:大于等于 10 并且小于等于 99。
-
用
&&把两个比较连起来,注意别写成数学里的连不等式。
自查:用 9、10、99、100 四个边界值分别测一次;如果 9 也输出 1,就是连不等式写错了。