top1编程
← 返回题目
题解

【入门】冷饮的价格(2)

1 条题解

  • 0
    @ 2026-7-31 14:22:43

    解题思路

    题目要求根据购买冰棍的数量分档计算价格:

    • 买 30 个及以上:1 元/个
    • 买 20~29 个:1.2 元/个
    • 买 10~19 个:1.5 元/个
    • 买 10 个以下:1.8 元/个

    思路:分档判断。

    从最高档往最低档判断,用 if-else 连起来:

    • 先判断是否 >= 30
    • 再判断是否 >= 20(此时一定 < 30,落在 20~29)
    • 再判断是否 >= 10(此时一定 < 20,落在 10~19)
    • 剩下的就是 < 10

    为什么从大到小判断? 这样每个 else if 只要判断下界,前面的判断已经保证了上界,写起来最简洁。

    参考代码

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main() {
        int a;
        double b;
        cin >> a;
    
        if (a >= 30) {
            b = a * 1;    // 1 元/个
        } else if (a >= 20) {
            b = a * 1.2;  // 1.2 元/个
        } else if (a >= 10) {
            b = a * 1.5;  // 1.5 元/个
        } else {
            b = a * 1.8;  // 1.8 元/个
        }
    
        cout << fixed << setprecision(1) << b << endl;
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(1)
    • 空间复杂度:O(1)
    • 1