题解
2026-06-10 13:23:11
发布于:广东
1阅读
0回复
0点赞
这是一道非常经典的分段计费问题,我们只需要根据用电量所在的区间,按照不同的单价分别计算费用然后相加即可。
解题思路
第一档:用电量 ≤ 150 千瓦时,全部按 0.4463 元 / 度计算。
第二档:151 ~ 400 千瓦时,前 150 度按 0.4463 元,超出 150 的部分按 0.4663 元计算。
第三档:≥ 401 千瓦时,前 150 度 + 中间 250 度 + 超出 400 的部分按 0.5663 元计算。
最后输出结果,保留小数点后 1 位。
带注释:
#include <iostream>
#include <iomanip> // 用于设置输出精度
using namespace std;
int main() {
int kwh; // 用电量
cin >> kwh;
double cost = 0;
if (kwh <= 150) {
// 第一档:150度及以下
cost = kwh * 0.4463;
} else if (kwh <= 400) {
// 第二档:151 ~ 400度
cost = 150 * 0.4463 + (kwh - 150) * 0.4663;
} else {
// 第三档:401度及以上
cost = 150 * 0.4463 + 250 * 0.4663 + (kwh - 400) * 0.5663;
}
// 输出,保留1位小数
cout << fixed << setprecision(1) << cost << endl;
return 0;
}
不带注释:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int kwh;
cin >> kwh;
double cost = 0;
if (kwh <= 150) {
cost = kwh * 0.4463;
} else if (kwh <= 400) {
cost = 150 * 0.4463 + (kwh - 150) * 0.4663;
} else {
cost = 150 * 0.4463 + 250 * 0.4663 + (kwh - 400) * 0.5663;
}
cout << fixed << setprecision(1) << cost << endl;
return 0;
}
代码说明
fixed << setprecision(1):这个语句用来控制输出格式,表示固定小数形式,并保留 1 位小数。
分段计算:使用 if-else 判断用电量属于哪个档位,分别计算费用。
样例验证:
输入 267:
前 150 度:150 * 0.4463 = 66.945
超出部分 267-150=117 度:117 * 0.4663 = 54.5571
总计:66.945 + 54.5571 = 121.5021,保留 1 位小数为 121.5,与样例输出一致。
总结
这是分段计费模板题,直接按区间判断计算即可;
输出必须用 fixed + setprecision(1) 保留1 位小数;
变量类型用 double 存储电费,保证精度。
这里空空如也







有帮助,赞一个