时间限制: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
只是做为简单训练来看,可做一试
2460

被折叠的 条评论
为什么被折叠?



