Eat.随 发表于 2023-10-26 09:14:28

带你学C带你飞 SIE5动动手第二题求助

请问动动手的第二题
先 price = (2 * FANQIE + KONGXINCAI + YOUCAI) * 0.5; // 1斤 == 0.5公斤,然后又 price = (3 * XIQIN + 0.5 * YANGCONG + 5 * HUANGGUA) * 0.5;
这样price就等于两个东西,使用printf时调用price不就会有矛盾吗?
求助求助!感恩感谢!

isdkz 发表于 2023-10-26 09:14:43

你好!根据你提供的代码,price的值是通过两个表达式计算得到的。在第一个表达式中,price的值等于(2 * FANQIE + KONGXINCAI + YOUCAI) * 0.5;在第二个表达式中,price的值等于(3 * XIQIN + 0.5 * YANGCONG + 5 * HUANGGUA) * 0.5。

当你使用printf函数调用price时,确实会有矛盾。因为price在两个表达式中都被重新赋值了,所以只能保留最后一次赋值的结果。

如果你想要分别输出这两个表达式的结果,你可以使用两个不同的变量来保存它们的值,然后分别调用printf函数输出这两个变量的值。

例如:

float price1 = (2 * FANQIE + KONGXINCAI + YOUCAI) * 0.5;
float price2 = (3 * XIQIN + 0.5 * YANGCONG + 5 * HUANGGUA) * 0.5;

printf("第一个表达式的结果为:%f\n", price1);
printf("第二个表达式的结果为:%f\n", price2);


这样就能够分别输出两个表达式的结果,避免了矛盾。希望能对你有所帮助!如果还有其他问题,请随时提问。

陶远航 发表于 2023-10-26 09:15:05

根据你提供的代码,price变量在两个地方被赋值,因此最后的结果会是最后一次赋值的值。这种情况下,可以使用不同的变量名来存储每个阶段的计算结果,或者将第一个price赋值语句注释掉以避免矛盾。以下是两个可能的解决方案:

解决方案1:使用不同的变量名存储每个阶段的计算结果:
float price1 = (2 * FANQIE + KONGXINCAI + YOUCAI) * 0.5;
float price2 = (3 * XIQIN + 0.5 * YANGCONG + 5 * HUANGGUA) * 0.5;

printf("第一部分的价格:%f\n", price1);
printf("第二部分的价格:%f\n", price2);


解决方案2:注释掉第一个price赋值语句:
// float price = (2 * FANQIE + KONGXINCAI + YOUCAI) * 0.5;

float price = (3 * XIQIN + 0.5 * YANGCONG + 5 * HUANGGUA) * 0.5;

printf("价格:%f\n", price);


请注意,这些解决方案只是为了避免矛盾,并根据你提供的信息进行了简化。实际应用中可能需要根据具体需求进行调整。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

Eat.随 发表于 2023-10-26 10:40:53

isdkz 发表于 2023-10-26 09:14
你好!根据你提供的代码,price的值是通过两个表达式计算得到的。在第一个表达式中,price的值等于(2 * FAN ...

原始代码是这个
#include <stdio.h>

#define FANQIE3.7
#define JIELAN7
#define XIQIN   1.3
#define KONGXINCAI      8
#define YANGCONG      2.4
#define YOUCAI9
#define HUANGGUA      6.3
#define BAILUOBO      0.5

int main()
{
      float price;

      price = (2 * FANQIE + KONGXINCAI + YOUCAI) * 0.5; // 1斤 == 0.5公斤
      printf("小明需要支付%.2f元\n", price);

      price = (3 * XIQIN + 0.5 * YANGCONG + 5 * HUANGGUA) * 0.5;
      printf("小红需要支付%.2f元\n", price);

      price = (10 * UANGGUA + 20 * BAILUOBO) * 0.5;
      printf("小甲鱼需要支付%.2f元\n", price);

      return 0;
}
所以第一次price=...的时候,print第一次的,然后第二次再price=...时,price被重新赋值,此时print,将输出重新赋值的结果,是这样吗?
谢谢大佬
页: [1]
查看完整版本: 带你学C带你飞 SIE5动动手第二题求助