在用PTA平台作一道有关阶梯电价的题目遇到的一点问题
描述问题为:
题目将整型变量cost 分为3个区间 分别是cost<0,cost<=50,cost>50;
我使用嵌套if语句的时候if后括号内的顺序分别为
(cost<0) (cost<=50)(cost>50)才能正确运行吗?
为什么将三者先后顺序变更就会得到错误的输出值?

怕描述的不清楚,附上两个图
图2为正解 图1为错解

0<cost<=50?,好像不能直接这样写吧 应该是cost>0 && cost<=50吧
假设cost=70 0<cost返回true,也就是1 1<=50 所以0<cost<=50 在cost=70时都为true了。

    0 < cost <= 50 (不能这么写
    C语言里面是计算不是数学表达式啊喂(

    C 语言 if () 语句中间的括号部分,需要一个能推算出布尔类型的一个值的"表达式"

    0 < costcost <= 50 是单独的两个表达式,两个表达式可以合成一个新的表达式,类似 (0 < cost) && (cost <= 50),这时候需要用初高中数学说到的“整体思想”去看待(可以 借助 scratch 来建立直观)。

    luo_ 可能是我把高中数学区间的概念不自觉地移入C语言中了。
    0<cost<=50 中 连续的关系运算是从左到右执行的 最后cost应该是1了

      Elite
      我原来的想法是从小往大判断,
      就写成了
      if(cost<0);
      else if(cost<=50);
      else ;
      cost=0应该会归入第二个条件中吧?

        DNE 纠正一点,没有涉及到赋值操作,cost 是不会变的

        © 2018-2025 0xFFFF