fabvy12 发表于 2019-10-14 10:39:27

新生小白的求助

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量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>//这是我的代码,在PTA上还错了一个调试点。是小于0的调试点。求助。
int main(void)
{
        int e;
        float 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;                           
}

jackz007 发表于 2019-10-14 10:44:37

      楼主,下面的代码难道不能解决你的问题吗?怎么还在发帖求助呀?
#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:54:01

我想看一下我错哪啦{:5_109:},不过也很感激你~

fabvy12 发表于 2019-10-14 11:13:11

jackz007 发表于 2019-10-14 10:44
楼主,下面的代码难道不能解决你的问题吗?怎么还在发帖求助呀?

请问你那个代码,问号那里是个判断吗?
它的具体用法是咋样的,
是if() {? :}吗
我没有见过这样子的代码 但是在一次考试中见到了,
求指点

jackz007 发表于 2019-10-14 11:24:36

fabvy12 发表于 2019-10-14 10:54
我想看一下我错哪啦,不过也很感激你~

      你的代码基本也对,问题的关键是没有把 e 值的有效性与输出信息统一起来。导致在 e 值无效的情况下,还在输出 cost 信息。
      按你的写法,如果把显示 cost 信息的语句搬到计算 money 的两个语句之后,像这样:
      if (e > 50){
                money = 26.5 + (e - 50) * 0.58 ;
                printf("cost = %.2f",money)    ;
      } else if (e >= 0) {
                money = 0.53 * e               ;
                printf("cost = %.2f",money)    ;
      } else {
               printf("Invalid Value!")      ;
      }

      也应该是没有问题的。

fabvy12 发表于 2019-10-14 11:28:18

jackz007 发表于 2019-10-14 11:24
你的代码基本也对,问题的关键是没有把 e 值的有效性与输出信息统一起来。导致在 e 值无效的情 ...

嗯没错,我刚刚也是这样改了,不过还是你那种好,这个好像不符合单出口

jackz007 发表于 2019-10-14 11:31:01

fabvy12 发表于 2019-10-14 11:13
请问你那个代码,问号那里是个判断吗?
它的具体用法是咋样的,
是if() {? :}吗


      这是 C 语言里的三目运算符:
      a = (x > y)? x : y ;
      这个表达式的执行结果将把 x ,y 两个变量中,数值较大那个的值赋值给变量 a,它的逻辑基本上就是:
      if (x > y) a = x    ;
      else a = y         ;

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

jackz007 发表于 2019-10-14 11:31
这是 C 语言里的三目运算符:
      a = (x > y)? x : y ;
      这个表达式的执行结果将把 x...

呃呃,看不懂。笑哭笑哭
页: [1]
查看完整版本: 新生小白的求助