求评论区祥解这个问题

img

img


有点看不懂第一句if且往后哪里
求评论区详解*,好吧好像全都看不太懂
主要是grade是什么

你可以看看我这篇示例,都作了详细的注释:

/* discountCalculation.c -- 实现折扣计算 */
#include <stdio.h>
#include <stdlib.h>

/*
    如下图所示:
    -------------------------------------------------------------------------------------
    |    累计消费金额    |    未满 500 元    |    满 500 元    |    满 1000 元    |    满2000 元    |
    -------------------------------------------------------------------------------------
    |    享受的折扣        |    无折扣        |        9折        |        8折        |        7折        |
    -------------------------------------------------------------------------------------
    商城程序员为该活动编写以下程序,实现的功能为:输入顾客购物消费金额,核算
    并输出享受的折扣与折扣后的支付金额(支付金额精确到小数点后两位)。
*/
int main(void)
{
    // 定义浮点数变量 money 存储消费金额、c 存储消费折扣
    float money, c;
    // 定义整数变量 grade 记录消费级别,便于计算消费折扣
    int grade;
    // 提示性输出
    printf("请输入购物消费金额:");
    // 读取并存储输入的金额,如果变量的类型为double,则应使用 %lf 格式读取
    scanf("%f", &money);
    // if-else 结构判断输入的消费金额等级,便于计算消费折扣
    if (money >= 2000) {
        // 如果消费金额为2000及以上,则消费级别为 4 级
        grade = 4;
    } else {
        /*
            其他消费级别可以直接通过 money / 500 获取
            假设消费金额为499,那么 grade = 499 / 500 = 0, 没有折扣
            假设消费金额为512,那么 grade = 515 / 500 = 1, 打九折
            假设消费金额为1500,那么 grade = 1500 / 500 = 3, 打八折
            以此类推...
        */
        grade = money / 500;
    }
    // 根据消费级别使用 switch 语句获取消费折扣
    switch (grade)
    {
        // 小于五百没有折扣:1
        case 0: c = 1; break;
        // 大于五百且小于一千,则享受九折:0.9
        case 1: c = 0.9; break;
        // 一千及以上且小于两千,则享受八折:0.8
        case 2: 
        case 3: c = 0.8; break;
        // 两千及以上享受七折:0.7
        case 4: c = 0.7; break;
    }
    // 输出刚获取享受的优惠折扣
    printf("将享受的优惠:%f\n", c);
    // 输出优惠后实际支付的金额,并且使用 %.2f 输出格式保留两位小数
    printf("优惠后需支付的金额:%.2f", money * c);

    return 0;
}

grade直译有年级等级的意思,结合题意grade这个变量表示的是消费的等级,比如未满500,满500等
通过if语句判断购物总金额是否超过2000或以上,满足该条件则打7折。
接着将消费总金额除500后赋值给grade即为了下面switch语句判断方便,因为消费折扣等级500,1000等都是500的倍数,除500后case条件表示起来更简洁,如果不除500,将500,1000,2000去替换case中的0,1,2,3,4也是正确的