if(0<x<=50)不能这么写
改成 if(x>0 && x<=50)
另外12行改为 if(x<=0),否则当x为0时,啥输出也没有
虽然是大一新生,不过我们也可以稍微扩展一下,解放一下头脑,开阔一下思路
我开着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;
}