zoukankan      html  css  js  c++  java
  • 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千瓦时的总费用。因此,当电量超过这些值时,只需要加上额外的费用即可。

  • 相关阅读:
    spring mvc ajax请求
    spring mvc 返回页面数据
    spring mvc 参数传递的三种方式
    spring mvc 注解示例
    spring mvc handler的三种方式
    MyBatis 一级、二级缓存
    MyBatis 调用存储过程
    MyBatis动态SQL与模糊查询
    spring mvc 注解入门示例
    MyBatis 一对多关联查询
  • 原文地址:https://www.cnblogs.com/EisNULL/p/10639194.html
Copyright © 2011-2022 走看看