返回 课程

信奥AC之路-1级

0% 完成
0/0 步骤
  1. 第1课 开发环境与基础输出
    5 主题|小节
  2. 第2课 算术运算符
    7 主题|小节
  3. 第3课 printf与运算输出
    7 主题|小节
  4. 第4课 数的进制与拆位
    6 主题|小节
  5. 第5课 变量与基础运算
    17 主题|小节
  6. 第6课 常量与取整运算
    8 主题|小节
  7. 第7课 关系运算
    8 主题|小节
  8. 第8课 逻辑运算
    9 主题|小节
  9. 第9课 输入与计算进阶
    10 主题|小节
  10. 第10课 if语句及双分支语句
    8 主题|小节
  11. 第11课 if语句及双分支进阶
    11 主题|小节
  12. 第12课 三目运算
    9 主题|小节
  13. 第13课 多分支、多if和switch语句
    11 主题|小节
  14. 第14课 循环(基本输出)
    7 主题|小节
  15. 第15课 循环(While+If)
    8 主题|小节
  16. 第16课 循环(计数、求和、求乘积)
    7 主题|小节
  17. 第17课 循环进阶(While+)
  18. 第18课 do-while及while其他用法
  19. 第19课 For循环基础
  20. 第20课 For循环进阶
课 11, 主题|小节 3
进行中

11.2 区间判断和复合条件

2025年12月1日
课 进展
0% 完成

11.2.1 区间条件判断

“在实际问题中,我们经常需要判断某个值是否在特定区间内,”我解释道,”这时候,我们需要使用复合条件来表达区间约束。”

实验三:是否适合晨练

题目描述:输入温度t的值,判断其是否适合晨练,适合晨练输出YES,不适合输出NO。(20≤t≤30,则适合晨练YES,否则不适合NO)。

样例输入

25

样例输出

YES

样例输入

15

样例输出

NO

思路分析: 需要判断温度是否在20到30的闭区间内。可以使用”与”运算连接两个条件,或者使用”或”运算连接区间外的条件然后取反。在第一个样例中,25在[20,30]区间内,所以适合晨练。在第二个样例中,15不在[20,30]区间内,所以不适合晨练。

代码实现

// 方法一:默认值加条件更新
#include <iostream>
using namespace std;

int main() {
    int t;
    string st = "NO";              // 默认结果为NO
    cin >> t;
    if(t >= 20 && t <= 30) {       // 判断温度是否在区间内
        st = "YES";                // 如果在区间内,更新结果为YES
    }
    cout << st;
    return 0;
}

// 方法二:反向条件判断
#include <iostream>
using namespace std;

int main() {
    int t;
    cin >> t;
    string st = "YES";             // 默认结果为YES
    if(t < 20 || t > 30) {         // 判断温度是否在区间外
        st = "NO";                 // 如果在区间外,更新结果为NO
    }
    cout << st;
    return 0;
}

// 方法三:提前返回方式
#include <iostream>
using namespace std;

int main() {
    int t;
    cin >> t;
    if(t >= 20 && t <= 30) {       // 判断温度是否在区间内
        cout << "YES";             // 如果在区间内,输出YES
        return 0;                  // 结束程序
    }
    cout << "NO";                  // 如果不在区间内,输出NO
    return 0;
}

// 方法四:提前返回的反向判断
#include <iostream>
using namespace std;

int main() {
    int t;
    cin >> t;
    if(t < 20 || t > 30) {         // 判断温度是否在区间外
        cout << "NO";              // 如果在区间外,输出NO
        return 0;                  // 结束程序
    }
    cout << "YES";                 // 如果在区间内,输出YES
    return 0;
}

// 方法五:两个独立的if语句
#include <iostream>
using namespace std;

int main() {
    int t;
    cin >> t;
    if(t >= 20 && t <= 30) {       // 判断温度是否在区间内
        cout << "YES";             // 如果在区间内,输出YES
    }
    if(t < 20 || t > 30) {         // 判断温度是否在区间外
        cout << "NO";              // 如果在区间外,输出NO
    }
    return 0;
}

// 方法六:if-else判断区间
#include <iostream>
using namespace std;

int main() {
    int t;
    cin >> t;
    if(t >= 20 && t <= 30) {       // 判断温度是否在区间内
        cout << "YES";             // 如果在区间内,输出YES
    } else {                       // 否则(不在区间内)
        cout << "NO";              // 输出NO
    }
    return 0;
}

// 方法七:if-else判断区间外
#include <iostream>
using namespace std;

int main() {
    int t;
    cin >> t;
    if(t < 20 || t > 30) {         // 判断温度是否在区间外
        cout << "NO";              // 如果在区间外,输出NO
    } else {                       // 否则(在区间内)
        cout << "YES";             // 输出YES
    }
    return 0;
}

思考

  1. 方法一使用默认值并在条件满足时更新,结构清晰
  2. 方法二使用反向思维,判断区间外的条件
  3. 方法三和方法四使用提前返回避免额外变量
  4. 方法五使用两个独立的if语句分别处理两种情况
  5. 方法六和方法七使用if-else结构确保只有一个分支被执行
  6. 区间判断是日常编程中的常见场景,掌握它的不同表达方式很重要