鱼C论坛

 找回密码
 立即注册
查看: 2135|回复: 6

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

[复制链接]
发表于 2019-10-13 23:58:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量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
最佳答案
2019-10-14 10:49:13
当e<0时,输出Invalid Value!以后,程序没有结束,还会继续输出语句
printf("cost = %.2f",money);
所以会出错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-14 00:30:05 | 显示全部楼层
本帖最后由 jackz007 于 2019-10-14 09:58 编辑
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.         int e                                                      ;
  5.         float money                                                ;
  6.         scanf("%d" , & e)                                          ;
  7.         if(e >= 0) {
  8.                 money = (e > 50) ? 0.58 * e - 0.05 * 50 : 0.53 * e ;
  9.                 printf("cost = %.2f\n" , money)                    ;
  10.         } else {
  11.                 printf("Invalid Value!\n")                         ;
  12.         }
  13. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-14 10:33:09 | 显示全部楼层
炒鸡谢谢啊,不过我想知道我错哪了,炒鸡感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-14 10:49:13 | 显示全部楼层    本楼为最佳答案   
当e<0时,输出Invalid Value!以后,程序没有结束,还会继续输出语句
printf("cost = %.2f",money);
所以会出错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-14 10:52:56 | 显示全部楼层
对对对对对对对对对对,想好了好久,但是一直没有拿负数去调试。唉,多谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-14 11:11:19 | 显示全部楼层
  1.                 printf("Invalid Value!")        ;
  2. . . . . . .
  3.         printf("cost = %.2f",money)            ;
复制代码

        这两句应该是互斥关系,就是说,执行了一句,就不能执行另一句,而你的代码把后面一句放在了无条件执行区,在 e 值有效的时候,正常输出 cost 信息,没有任何问题,但是,在 e 为负值的时候,money 本身是个未经初始化的变量,却需要输出 cost 信息,如何会不出错?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

厉害啊,说得太清楚了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 00:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表