#t227. 判断是否为两位数

判断是否为两位数

判断是否为两位数

题目描述

判断一个正整数是否是两位数(即大于等于 1010 且小于等于 9999)。

输入格式

一个正整数,不超过 10001000。

输出格式

一行。若该正整数是两位数,输出 11,否则输出 00。

样例输入

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,就是连不等式写错了。