• 7.4 electirc.c -- 计算电费


    // 7.4 electirc.c -- 计算电费
    #include <stdio.h>
    #define RATE1 0.13230 // 首次使用 360 kwh 的费率
    #define RATE2 0.15040 // 接着再使用 108 kwh 的费率
    #define RATE3 0.30025 // 接着再使用 252 kwh 的费率
    #define RATE4 0.34025 // 使用超过 720 kwh 的费率
    #define BREAK1 360.0 // 费率的第1个分界点
    #define BREAK2 468.0 // 费率的第2个分界点
    #define BREAK3 720.0 // 费率的第3个分界点
    #define BASE1 (RATE1 * BREAK1) // 使用360kwh的费用
    #define BASE2 (BASE1 + (RATE2 * (BREAK2 - BREAK1))) // 使用468kwh的费用
    #define BASE3 (BASE1 + BASE2 + (RATE3 * ( BREAK3 - BREAK2))) // 使用720kwh的费用
    int main(void)
    {
    double kwh; // 使用的千瓦时
    double bill; // 电费
    printf("Please enter the kwh used. ");
    scanf("%lf", &kwh); // %lf对应double类型
    if (kwh <= BREAK1)
    bill = RATE1 * kwh;
    else if (kwh <= BREAK2) // 360 ~ 468 kwh
    bill = BASE1 + (RATE2 * (kwh - BREAK1));
    else if (kwh <= BREAK3) // 468 ~ 720 kwh
    bill = BASE2 + (RATE3 * (kwh - BREAK2));
    else // 超过720 kwh
    bill = BASE3 + (RATE4 * (kwh - BREAK3));
    printf("The change for %.1f kwh is $%1.2f. ", kwh, bill);
    return 0;
    }

    程序清单7.4用符号常量表示不同的费率和费率分界点,以便把常量统一放在一处。这样,电力公司在更改费率以及费率分界点时,更新数据非常方便。
    BASE1和BASE2根据费率和费率分界点来表示。一旦费率或分界点发生了变化,它们也会自动更新。
    预处理器是不进行计算的。
    程序中出现BASE1的地方都会被替换成0.13230*360.0。不用担心,编译器会对该表达式求值得到一个数值(47.628),以便最终的程序代码使用的是47.628而不是一个计算式。
    程序流简单明了。该程序根据kwh的值在3个公式之间选择一个。特别要注意的
    是,如果kwh大于360,程序只会到底第1个else。因此,else if (kwh <= BREAK2)
    这行相当于要求kwh在360~468之间,如程序注释所示。类似地,只有当kwh值超过
    720时,才会执行最后的else.最后,注意BASE1、BASE2和BASE3分别代表360、468和
    720千瓦时的总费用。因此,当电量超过这些值时,只需要加上额外的费用即可。

  • 相关阅读:
    11-8 Eureka Server整合SpringSecurity解决安全问题
    11-7 Eureka Server安全问题介绍
    11-6 CORS跨域资源共享解决
    11-5 JWT验证演示
    11-4 JWT验证开发演示
    11-3 JWT颁发流程讲解
    11-2 JWT介绍
    11-1 服务安全章节介绍
    10-15 Zuul知识点梳理
    10-14 Zuul与Meetingfilm整合
  • 原文地址:https://www.cnblogs.com/EisNULL/p/10639194.html
Copyright © 2020-2023  润新知