【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 进行授权