返回 课程

信奥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课 循环(计数、求和、求乘积)
    10 主题|小节
  17. 第17课 循环进阶(While+)
    8 主题|小节
  18. 第18课 do-while及while其他用法
    8 主题|小节
  19. 第19课 For循环基础
    9 主题|小节
  20. 第20课 For循环进阶
    8 主题|小节
课 12, 主题|小节 3
进行中

12.2 三目运算基础实验

2025年9月22日
课 进展
0% 完成

“小朋友们,让我们通过一系列实验来掌握三目运算的基本用法,”我说,”通过这些实验,你们将学会如何使用三目运算来解决各种实际问题。”

12.2.1 基本比较运算

实验一:奇偶判断

题目描述:输入一个正整数n,如果是偶数输出”yes”,如果是奇数输出”no”。

样例输入

4

样例输出

yes

代码实现

// 方法一:使用%2==0判断偶数
#include <iostream>
using namespace std;

int main() {
    int n;                       // 定义整数变量n
    cin >> n;                    // 输入一个整数
    cout << (n % 2 == 0 ? "yes" : "no"); // 判断n是否为偶数,是则输出"yes",否则输出"no"
    return 0;
}

// 方法二:使用%2判断奇数(非0为真)
#include <iostream>
using namespace std;

int main() {
    int n;                       // 定义整数变量n
    cin >> n;                    // 输入一个整数
    cout << (n % 2 ? "no" : "yes"); // 如果n%2不为0(奇数),输出"no",否则(偶数)输出"yes"
    return 0;
}

思考

  1. 方法一直接判断n%2==0,符合直觉,容易理解
  2. 方法二利用了非0值为真的特性,更简洁但可能不够直观
  3. 两种方法都使用了三目运算,比使用if-else更简洁

实验二:输入两个整数,输出较大的一个

题目描述:输入两个整数a和b,输出其中较大的一个。

样例输入

5 8

样例输出

8

代码实现

// 方法一:判断a>b
#include <iostream>
using namespace std;

int main() {
    int a, b;                    // 定义两个整数变量a和b
    cin >> a >> b;               // 输入两个整数
    cout << (a > b ? a : b);     // 判断a是否大于b,如果是则输出a,否则输出b
    return 0;
}

// 方法二:判断a<b
#include <iostream>
using namespace std;

int main() {
    int a, b;                    // 定义两个整数变量a和b
    cin >> a >> b;               // 输入两个整数
    cout << (a < b ? b : a);     // 判断a是否小于b,如果是则输出b,否则输出a
    return 0;
}

思考

  1. 两种方法本质上是等价的,只是条件判断的角度不同
  2. 方法一从a是否大于b的角度考虑,方法二从a是否小于b的角度考虑
  3. 三目运算比使用变量存储最大值或使用max函数更简洁
  4. 在这种简单场景下,三目运算的优势非常明显

12.2.2 实际应用问题

实验三:需要几个卡车

题目描述:有n件衣服需要运输,每辆卡车一次可以运m件衣服,需要一次运完,请问需要多少卡车?

样例输入

100 30

样例输出

4

代码实现

// 方法一:使用逻辑非判断是否能整除
#include <iostream>
using namespace std;

int main() {
    int n, m;                        // n是衣服数量,m是每辆卡车容量
    cin >> n >> m;                   // 输入衣服数量和卡车容量
    cout << (!(n % m) ? n / m : n / m + 1); // 如果能整除,则输出n/m,否则输出n/m+1
    return 0;
}

// 方法二:直接判断余数
#include <iostream>
using namespace std;

int main() {
    int n, m;                        // n是衣服数量,m是每辆卡车容量
    cin >> n >> m;                   // 输入衣服数量和卡车容量
    cout << (n % m ? n / m + 1 : n / m); // 如果有余数,则需要额外一辆车,否则刚好除尽
    return 0;
}

思考

  1. 方法一使用逻辑非(!)判断n%m是否为0,即能否整除
  2. 方法二直接判断n%m是否为非0值,即是否有余数
  3. 两种方法都涉及向上取整的思想,如果不能整除则需要多一辆车
  4. 三目运算在这类需要条件判断的计算问题中非常有用

实验四:打折问题

题目描述:输入三个金额,如果总金额大于100元,则超过100元的部分打九折,输出需要支付的金额。

样例输入

40 30 50

样例输出

118

代码实现

#include <iostream>
using namespace std;

int main() {
    int a, b, c;                      // 定义三个整数变量表示金额
    cin >> a >> b >> c;               // 输入三个金额
    int total = a + b + c;            // 计算总金额
    cout << (total > 100 ? 100 + (total - 100) * 0.9 : total); // 判断是否需要打折
    return 0;
}

思考

  1. 使用三目运算判断总金额是否大于100元
  2. 如果大于100元,则计算打折后的金额:100 + (total – 100) * 0.9
  3. 如果不大于100元,则直接输出原金额
  4. 三目运算使这种条件计算简洁明了

实验五:星期问题

题目描述:今天是周a,在过b天是周几?输出1-7之间的数字,表示星期几。

样例输入

3 4

样例输出

7

代码实现

#include <iostream>
using namespace std;

int main() {
    int a, b;                         // a是今天的星期几,b是经过的天数
    cin >> a >> b;                    // 输入今天是周几和经过的天数
    int day = (a + b) % 7;            // 计算(a+b)除以7的余数
    cout << (day ? day : 7);          // 如果余数为0,则是周日(7),否则就是余数对应的星期
    return 0;
}

思考

  1. 使用(a+b)%7计算经过b天后是星期几
  2. 在这里处理了一个特殊情况:当余数为0时,应该表示为周日(7)
  3. 三目运算简化了这种特殊情况的处理
  4. 这是一个应用取余和条件判断解决实际问题的好例子

实验六:闰年问题

题目描述:输入一个年份,判断是否为闰年,是输出”YES”,不是输出”NO”。

样例输入

2020

样例输出

YES

代码实现

#include <iostream>
using namespace std;

int main() {
    int y;                            // 定义整数变量y表示年份
    cin >> y;                         // 输入一个年份
    cout << (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0) ? "YES" : "NO"); // 判断是否为闰年
    return 0;
}

思考

  1. 闰年的判断规则:能被400整除,或者能被4整除但不能被100整除
  2. 使用三目运算直接输出判断结果
  3. 这个例子展示了三目运算在复杂条件判断中的应用
  4. 代码简洁但逻辑清晰,比使用if-else更加简明