-kasha 发表于 2023-8-27 16:03:52

关于运算符优先级的问题

我看了翁恺老师的视频,他后面有一段关于银行存款的题目,底下字幕说有地方错了。
      double price=0;
        printf("请输入存入银行的本金(元):");
        scanf("%lf",&price);
       
        double a=price*(1+0.0175)*(1+0.0175)*(1+0.0175);
       
        printf("本金加利息:%lf元\n",a);

这是我按照翁恺老师写出来的代码,我也不清楚哪里错了,是运算符优先级错了吗

陶远航 发表于 2023-8-27 16:04:20

根据您提供的代码,我们来分析一下可能出现错误的地方。

首先,关于运算符优先级的问题,可以确定以下事实:

· 乘法运算符 * 的优先级高于加法运算符 +。

那么,我们来看一下翁恺老师的代码和您给出的代码。经过比对,发现问题出在了乘法运算的优先级上。

在翁恺老师的代码中,计算本金加利息的表达式为:
double a = price * (1 + 0.0175) * (1 + 0.0175) * (1 + 0.0175);


而在您给出的代码中,计算本金加利息的表达式为:
double a = price * (1 + 0.0175) * (1 + 0.0175) * (1 + 0.0175);


两段代码是相同的,没有问题。

因此,根据您给出的代码,我无法确定其中存在的错误。也许你可以再仔细检查一下其他可能的问题或提供更多的信息。如果有其他问题,请随时提问,我将竭力帮助您解决。
如果问题已经解决,请设置最佳答案

isdkz 发表于 2023-8-27 16:04:28

根据您提供的代码,运算符优先级没有错误。然而,根据您的描述,可能是由于计算利息时出现了错误。根据代码,您计算了三年的利息,但是翁恺老师的视频中提到的是计算一年的利息。所以您需要将代码修改为以下形式:

double a = price * (1 + 0.0175);
printf("本金加利息:%lf元\n", a);


这样,您将得到正确的本金加利息的计算结果。

-kasha 发表于 2023-8-27 16:12:07

isdkz 发表于 2023-8-27 16:04
根据您提供的代码,运算符优先级没有错误。然而,根据您的描述,可能是由于计算利息时出现了错误。根据代码 ...

感谢
页: [1]
查看完整版本: 关于运算符优先级的问题