C语言课后练习题
#include <stdio.h>#define FANQIE 3.7/2
#define JIELAN 7/2
#define XIQIN 1.3/2
#define KONGXINCAI 8/2
#define YANGCONG 2.4/2
#define YOUCAI 9/2
#define HUANGGUA 6.3/2
#define BAILUOBO 0.5/2
int main()
{
double a,b,c;
a = 2*FANQIE + KONGXINCAI + YOUCAI;
printf("小明需要支付%.2f元\n", a);
b = 3*XIQIN + 0.5*YANGCONG + 5*HUANGGUA;
printf("小红需要支付%.2f元\n", b);
c = 10*HUANGGUA + 20*BAILUOBO;
printf("小甲鱼需要支付%.2f元\n", c);
return 0;
}
C语言课后练习题S1E5
运行结果小明支付那里不对
代码哪里有问题呀
是上面除2的问题吗 是的,代码中定义的菜价都除以了2。这是因为在C语言中,除法运算符/默认执行整数除法。所以当除以2时,结果会被截断为整数。例如,7/2的结果是3,而不是3.5。
解决这个问题的方法是将除法运算符/替换为浮点除法运算符/。修改代码如下:
#include <stdio.h>
#define FANQIE 3.7/2.0
#define JIELAN 7/2.0
#define XIQIN 1.3/2.0
#define KONGXINCAI 8/2.0
#define YANGCONG 2.4/2.0
#define YOUCAI 9/2.0
#define HUANGGUA 6.3/2.0
#define BAILUOBO 0.5/2.0
int main()
{
double a,b,c;
a = 2*FANQIE + KONGXINCAI + YOUCAI;
printf("小明需要支付%.2f元\n", a);
b = 3*XIQIN + 0.5*YANGCONG + 5*HUANGGUA;
printf("小红需要支付%.2f元\n", b);
c = 10*HUANGGUA + 20*BAILUOBO;
printf("小甲鱼需要支付%.2f元\n", c);
return 0;
}
现在重新运行程序,小明支付的金额应该是正确的了。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 jackz007 于 2024-4-1 10:40 编辑
此两句有误:
#define JIELAN 7/2 /* 问题,整数除法,结果是 3,而非 3.5 */
#define YOUCAI 9/2 /* 问题,整数除法,结果是 4,而非 4.5 */
如果被除数和除数都是整型数,那么,就是整数除法,商也是整型数,小数部分会被直接忽略。
所以,这两句必须改为:
#define JIELAN 7.0/2
#define YOUCAI 9.0/2
页:
[1]