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语言中,除法运算符`/`是针对整数运算的,当被除数和除数都是整数时,结果会取整数部分,而不是保留小数部分。所以在定义宏时使用除法运算符会导致结果不准确。
解决方法是将宏定义中的除法改为除以浮点数。修改代码如下:
#define FANQIE 3.7/2.0
#define JIELAN 7.0/2.0
#define XIQIN 1.3/2.0
#define KONGXINCAI 8.0/2.0
#define YANGCONG 2.4/2.0
#define YOUCAI 9.0/2.0
#define HUANGGUA 6.3/2.0
#define BAILUOBO 0.5/2.0
这样重新编译运行程序,就会得到正确的结果了。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]