在用PTA平台作一道有关阶梯电价的题目遇到的一点问题 描述问题为: 题目将整型变量cost 分为3个区间 分别是cost<0,cost<=50,cost>50; 我使用嵌套if语句的时候if后括号内的顺序分别为 (cost<0) (cost<=50)(cost>50)才能正确运行吗? 为什么将三者先后顺序变更就会得到错误的输出值?
怕描述的不清楚,附上两个图 图2为正解 图1为错解
cost=0呢
Elite 我原来的想法是从小往大判断, 就写成了 if(cost<0); else if(cost<=50); else ; cost=0应该会归入第二个条件中吧?
0<cost<=50?,好像不能直接这样写吧 应该是cost>0 && cost<=50吧 假设cost=70 0<cost返回true,也就是1 1<=50 所以0<cost<=50 在cost=70时都为true了。
luo_ 可能是我把高中数学区间的概念不自觉地移入C语言中了。 0<cost<=50 中 连续的关系运算是从左到右执行的 最后cost应该是1了
0 < cost <= 50 (不能这么写 C语言里面是计算不是数学表达式啊喂(
C 语言 if () 语句中间的括号部分,需要一个能推算出布尔类型的一个值的"表达式"。
if ()
0 < cost 和 cost <= 50 是单独的两个表达式,两个表达式可以合成一个新的表达式,类似 (0 < cost) && (cost <= 50),这时候需要用初高中数学说到的“整体思想”去看待(可以 借助 scratch 来建立直观)。
0 < cost
cost <= 50
(0 < cost) && (cost <= 50)
DNE 纠正一点,没有涉及到赋值操作,cost 是不会变的
DNE 我指的是图一的代码
© 2018-2023 0xFFFF