文章

【GESP】C++一级练习 luogu-P1422, 小玉家的电费

GESP一级练习,条件分支和浮点数计算、格式化输出问题,难度★☆☆☆☆。

luogu-P1422

题目要求

题目描述

夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写:据闽价电 [2006]27 号规定,月用电量在 $150$ 千瓦时及以下部分按每千瓦时 $0.4463$ 元执行,月用电量在 $151\sim 400$ 千瓦时的部分按每千瓦时 $0.4663$ 元执行,月用电量在 $401$ 千瓦时及以上部分按每千瓦时 $0.5663$ 元执行。小玉想自己验证一下,电费通知单上应交电费的数目到底是否正确呢。请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费应该是多少。

输入格式

输入一个正整数,表示用电总计(单位以千瓦时计),不超过 $10000$。

输出格式

输出一个数,保留到小数点后 $1$ 位(单位以元计,保留到小数点后 $1$ 位)。

样例输入 #1

1
267

样例输出 #1

1
121.5

题目分析

本题目要求我们根据输入的用电总计,计算并输出小玉家应交的电费。根据题目描述:

  • 首先,我们需要读取输入的用电总计(单位:千瓦时),并初始化一个变量用于存储计算出的电费。
  • 接着,根据用电量的不同区间,使用不同的电价进行计算:
    • 如果用电量在150千瓦时及以下,按每千瓦时0.4463元计算。
    • 如果用电量在151到400千瓦时之间,前150千瓦时按0.4463元计算,超过部分按0.4663元计算。
    • 如果用电量超过400千瓦时,前150千瓦时按0.4463元计算,接下来的250千瓦时按0.4663元计算,超过400千瓦时的部分按0.5663元计算。
  • 最后,输出计算得到的电费,保留到小数点后1位。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <cstdio>

int main() {
    int a; // 变量a用于存储总用电量(单位:千瓦时)
    double b = 0; // 变量b用于存储计算出的电费,初始化为0
    scanf("%d", &a); // 从输入中读取总用电量

    // 根据用电量计算电费
    if (a <= 150) {
        // 如果用电量在150千瓦时或以下,按第一档电价计算
        b = a * 0.4463;
    } else if (a >= 151 && a <= 400) {
        // 如果用电量在151到400千瓦时之间,第一档电价适用于前150千瓦时
        // 第二档电价适用于超过150千瓦时的部分
        b += 150 * 0.4463; // 计算前150千瓦时的费用
        b += (a - 150) * 0.4663; // 计算超过150千瓦时的费用
    } else {
        // 如果用电量超过400千瓦时,第一档电价适用于前150千瓦时,
        // 第二档电价适用于接下来的250千瓦时,第三档电价适用于超过400千瓦时的部分
        b += 150 * 0.4463; // 计算前150千瓦时的费用
        b += (400 - 150) * 0.4663; // 计算接下来的250千瓦时的费用
        b += (a - 400) * 0.5663; // 计算超过400千瓦时的费用
    }

    printf("%.1f", b); // 输出总电费,保留到小数点后1位
    return 0; // 返回0表示程序成功执行
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

本文由作者按照 CC BY 4.0 进行授权