C++洛谷题解(24)——P1422
题名:小玉家的电费
题目:夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行,月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行,月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一下,电费通知单上应交电费的数目到底是否正确呢。请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费应该是多少。
输入:输入一个整数,表示用电总计(单位以千瓦时计),不超过10000。
输出:输出一个数,保留到小数点后1位(单位以元计,保留到小数点后1位)。
连做了三道普及组终于来了一道送分题了。但这道题涉及到了阶段付费,小学五六年级的数学。思路如下:
- 声明一个double类型的变量s表示钱数,声明一个int类型变量n表示用电数
- 输入n的值
- 判断n符合哪个阶段
- 计算相关钱数
- 输出向下取整后的钱数
但是怎么计算钱数呢?我们可以按照下面的方法判断并计算:
- 由于题目中有三个阶段,所以我们要用三个if语句
- if语句表达式可以写成n>*或者n<*,判断n符合哪个阶段
- 先以150以内举例。s=n*0.4463
- 再以151~400内举例。s=150*0.4463+(n-150)*0.4663
- 最后是401及以上的。s=150*0.4463+250*0.4663+(n-400)*0.5663
思路和方法都有了,代码如下:
#include<bits/stdc++.h>//万能头
using namespace std;
int main(){
double s;//声明的表示钱数的double类型的浮点型的变量
int n;//声明的表示用电数的int类型的整型变量
cin>>n;//输入用电数
if(n>400){//从n大于400开始判断
s=150*0.4463+250*0.4663+(n-400)*0.5663;//利用上面的分段计算公式
}else if(n>150){//判断n大于150的情况
s=150*0.4463+(n-150)*0.4663;//也利用上面的公式进行分段计算
}else{//如果都不是,也就是n小于150的情况
s=n*0.4463;//这个就不用分段计算了
}
cout<<floor(s*10+0.5)/10.0;//floor向下取整,向下取整并返回1位小数
return 0;//完美的结束
}
复制版:
#include<bits/stdc++.h>
using namespace std;
int main(){
double s;
int n;
cin>>n;
if(n>400){
s=150*0.4463+250*0.4663+(n-400)*0.5663;
}else if(n>150){
s=150*0.4463+(n-150)*0.4663;
}else{
s=n*0.4463;
}
cout<<floor(s*10+0.5)/10.0;
return 0;
}