大一新生寻帮助阶梯电价

img

img


该怎么改
哪里错了
12345678912345678911111111111111111111

if(0<x<=50)不能这么写
改成 if(x>0 && x<=50)
另外12行改为 if(x<=0),否则当x为0时,啥输出也没有

img

img

虽然是大一新生,不过我们也可以稍微扩展一下,解放一下头脑,开阔一下思路
我开着vs ide就不切换环境了,直接用C#写,你用C+其实也可以用这种思路

decimal kwh = 50;
decimal price1 = 0.53m;
decimal price2 = price1 + 0.05m;
//题目特殊,我们也没必要写if,利用Math.Max,Math.Min就可以写到一起
//1阶段,求50以内的电费,比50小就直接取原值,比50大按50算,至于楼上说的0和负值就直接去0
//2阶段,求50以上的部分,如果原值本身就不足50,减法为负数,乘数取0了。如果他本身比50大,求超出50的部分
decimal pay = Math.Max(0, Math.Min(50, kwh)) * price1 + Math.Max(0, kwh - 50) * price2;
//既然是开阔思路,上面的可以理解,那么自然可以得到下面的
decimal pay2 = Math.Max(0, kwh) * price1 + Math.Max(0, kwh - 50) * 0.05m;

感谢邀请
代码给你稍微修改了下

#include <stdio.h>
#include<string>

int main()
{
    int x = 0;
    float a = 0.0, b = 0.0;

    for (int i = 0; i < 3; i++)
    {
        scanf("%d", &x);
        if (0 < x && x <= 50)
        {
            a = x * 0.53;
            printf("%f\n", a);
        }
        if (x <= 0)
        {
            printf("0");
        }

        if (x > 50)
        {
            b = 26.5 + (x - 50) * 0.58;
            printf("%f\n", b);
        }
    }

    system("pause");
    return 0;
}