关于c语言条件运算符的问题

该产品的单价是$3.5。当数量超过10时,提供%5的折扣。条件运算符如下:
total_price = unit_price*quantity*(quantity >10 ? 1.0 :0.95);
这个条件运算符成立吗?
这个不是应该quantity大于10,就计算第一个表达式。超过10,乘1.0,那不是相当于没折扣吗?不超过10的时候才乘0.95.这个条件运算符是不是写错了?求解

第1个回答  2014-06-13
total_price = unit_price*quantity*(quantity>10?0.95:1.0);数量大于10,单价乘0.95,反之,单价乘1追问

谢谢!

第2个回答  2014-06-13
恩,你理解的是正确的。应该是:total_price = unit_price*quantity*(quantity >10 ? 0.95 :1.0);追问

啊???!! 那你的意思是书上的写错了??????
我看的这本是是

追答

根据所提供的条件,是应该这样写的,并且运算结果也验证是正确的,如果书上那样是写的,恐怕就是写错了吧!

追问

哈哈哈哈哈 我要打电话给出版社啊!!

追答

打给出版社估计没啥结果,不过要是给作者写封邮件,估计会有回复:-)

追问

我刚写完

追答

恩,那就静待佳音吧,相信自己的理解没错!

追问

谢谢。能帮忙看看2L的代码吗?

追答

3L已经解释的很明白了:-)

追问

大哥。。。。在帮忙看下2L。。。。 我有没有说错。。。。

追答

你理解的很对啊,是他没理解对折扣的意思!%5的折扣,就是95折,就是总价*0.95.

本回答被提问者采纳
第3个回答  2014-06-13
int a; //数量
int b; //价格
scanf("%d",&a);
b=a>10?3.5*1.05:3.5;追问

??乘1.05?

追答

3.5*1.05
不就是提供%5的折扣吗?

追问

我是刚学c。。。。刚自学。。
理解的不对请见谅。。
书上说。当逻辑表达式a>10的时候,就计算第1个表达式。
可是我没看太明白。。当大于10时,你用3.5*1.05是什么意思。而且,第二个表达式。光写了一个3.5也没看太明白。。请指教。。

追答

你谦虚了

你写的是什么?头文件吗?


看我写的C语言程序,是不是你说的那个:

当输入的数小于10时,3.5*总数

当输入的数大于10时,3.5*1.05*总数

#include <stdio.h>

int main(void)
{
float a;     //数量
float b; //价格
printf("\n输入数量:");
scanf("%g",&a);
b=a>10?((3.5*1.05)*a):((3.5)*a);
printf("\n价格是:%g\n\n",b);
system("pause");
}

追问

虽然你写的我不是太懂。。但是我感觉你也写错了
你没理解折扣的意思。
当数量10时。比如是15
15*3.5*0.95=49.875
这道题的意思是大于10会有折扣,应该要比1小啊? 可你的折扣是1.05,为什么比1还大呢?

追答

哦,懂了,我以为折扣5%是在原有的基础上加5%的价格呢……

第4个回答  2014-06-13
total_price = unit_price*quantity*(quantity >10 ? 0.95 :1.0);追问

我也赶脚是这样啊。。
不知道是书写错了,还是我理解错了。 但是原题是那个

追答

条件表达式为:表达式1?表达式2:表达式3

先求解表达式1,

若其值为真(非0)则将表达式2的值作为整个表达式的取值,

否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。
所以书上写错了。尽信书则不如无书。相信自己的判断。

追问

大哥,能看楼上的代码,跟我讲一下吗??

追答

quantity >10 ? 0.95:1.0
这个是一个表达式,算一个整体,你也可以称之为折扣
当购买数量quantity大于10时,整个表达式的值就为0.95,也就是折扣为0.95,也就是提供%5的折扣
当购买数量quantity小于等于10,整个表达式的值就为1.0,也就是没有折扣

追问

可是楼上写的是3.5*1.05.结果是3.675。 比3.5还要大 是不是他写错了?

追答

很明显他没有理解折扣的意思,是乘以0.95没错,打个比方,你是卖家,你为了促销需要打折扣,一个商品你卖3.5元,买10个就打%5的折扣,按楼上这个兄台的意思就是3.5*10*1.05=36.75,但是你不打折扣的情况顾客只要掏35就能买到,你说他错了没有?

追问

谢谢!

相似回答