(C语言)小玉家的电费

时间限制:1000ms内存限制:256M

题目描述

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

输入描述:

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

输出描述:

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

示例:

输入267

输出121.5

代码如下:

#include<stdio.h>
int main()
{
    float a;
    scanf("%f", &a);
    float x = 0, b = 0, c = 0, d = 0;
    if (a >= 0 && a <= 150)
    {
        x = a * 0.4463;
        printf("%.1f", x);
    }
    else if (a > 150 && a <= 400)
    {
        b = 150 * 0.4463;
        c = (a - 150) * 0.4663;
        x = b + c;
        printf("%.1f", x);
    }
    else
    {
        b = 150 * 0.4463;
        c = 250 * 0.4663;
        d = (a - 400) * 0.5663;
        x = b + c + d;
        printf("%.1f", x);
    }
    return 0;
}

此为最基本的解法

如果用自定义函数的解法来做

如下:

#include<stdio.h>
float take(float a)
{
    float c;
    if(a >= 0 && a <= 150)
    {
        c = a * 0.4463;
        return c;
    }
    else if(a > 150 && a <= 400)
    {
        c = (a - 150) * 0.4663 + 66.945;
        return c;
    }
    else
    {
        c = (a - 400) * 0.5663 + 116.575 + 66.945;
        return c;
    }
}
int main()
{
    int a;
    float b;
    scanf("%d", &a);
    b = take(a);
    printf("%.1f", b);
    return 0;
}

但是,自定义函数解法内存消耗为18MB,而普通解法内存消耗仅为9MB

只是做为简单训练来看,可做一试

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值