fabvy12 发表于 2019-10-13 23:58:24

萌新求答疑,非常基础的C语言题,求大神们指点


为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。
输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。
输入样例1:
10
输出样例1:
cost = 5.30
输入样例2:
100
输出样例2:
cost = 55.50
以上是题。
#include<stdio.h>
int main(void)
{
        int e;
        double money;
        scanf("%d",&e);
        if (e>50)
        {
                money=26.5+(e-50)*0.58;
        }
        else if (e>=0)
        {
                money=0.53*e;
        }
       else
   {
         printf("Invalid Value!");
   }
       
        printf("cost = %.2f",money);
        return 0;
}                                                            这是我的代码,但是还错了一点,求指点。0            小于0的那个测试点错了
sample 1 小于50
答案正确
2 ms
380 KB
1
sample 2 大于50
答案正确
3 ms
256 KB
2
等于50
答案正确
2 ms
256 KB
3
小于0
答案错误
3 ms
256 KB

jackz007 发表于 2019-10-14 00:30:05

本帖最后由 jackz007 于 2019-10-14 09:58 编辑

#include<stdio.h>
int main(void)
{
      int e                                                      ;
      float money                                                ;
      scanf("%d" , & e)                                          ;
      if(e >= 0) {
                money = (e > 50) ? 0.58 * e - 0.05 * 50 : 0.53 * e ;
                printf("cost = %.2f\n" , money)                  ;
      } else {
                printf("Invalid Value!\n")                         ;
      }
}

fabvy12 发表于 2019-10-14 10:33:09

炒鸡谢谢啊,不过我想知道我错哪了,炒鸡感谢

haha_1 发表于 2019-10-14 10:49:13

当e<0时,输出Invalid Value!以后,程序没有结束,还会继续输出语句
printf("cost = %.2f",money);
所以会出错。

fabvy12 发表于 2019-10-14 10:52:56

对对对对对对对对对对,想好了好久,但是一直没有拿负数去调试。唉,多谢

jackz007 发表于 2019-10-14 11:11:19

                printf("Invalid Value!")      ;
. . . . . .
      printf("cost = %.2f",money)            ;
      这两句应该是互斥关系,就是说,执行了一句,就不能执行另一句,而你的代码把后面一句放在了无条件执行区,在 e 值有效的时候,正常输出 cost 信息,没有任何问题,但是,在 e 为负值的时候,money 本身是个未经初始化的变量,却需要输出 cost 信息,如何会不出错?

fabvy12 发表于 2019-10-14 11:29:49

jackz007 发表于 2019-10-14 11:11
这两句应该是互斥关系,就是说,执行了一句,就不能执行另一句,而你的代码把后面一句放在了无条 ...

厉害啊,说得太清楚了,
页: [1]
查看完整版本: 萌新求答疑,非常基础的C语言题,求大神们指点