C++洛谷题解(24)——P1422

题名:小玉家的电费

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

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

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

连做了三道普及组终于来了一道送分题了。但这道题涉及到了阶段付费,小学五六年级的数学。思路如下:

  1. 声明一个double类型的变量s表示钱数,声明一个int类型变量n表示用电数
  2. 输入n的值
  3. 判断n符合哪个阶段
  4. 计算相关钱数
  5. 输出向下取整后的钱数

但是怎么计算钱数呢?我们可以按照下面的方法判断并计算:

  1. 由于题目中有三个阶段,所以我们要用三个if语句
  2. if语句表达式可以写成n>*或者n<*,判断n符合哪个阶段
  3. 先以150以内举例。s=n*0.4463
  4. 再以151~400内举例。s=150*0.4463+(n-150)*0.4663
  5. 最后是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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mine Shin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值