为什么它要求相同,但在代码中只有1个printf()?

时间:2017-10-10 09:58:52

标签: c

我很抱歉,但我只是学习c,可能很容易修复,但我不知道如何

在代码中我只有1个printf,但在终端中显示相同的问题2次。但最后结果是正确的。

#include <stdio.h>
#include <math.h>

double lfDemanaTaxa(){
    double i;
    double d;

    printf("Quant es la taxa interes nominal?\n");
    scanf("%lf",&i);
    d = i/100;

    return d;
}
double lfDemanaMensualitat(){
    double n;

    scanf("%lf",&n);

    return n;
}

int main(){
    double a,b,c,TAE;
    a = (1+lfDemanaTaxa()/lfDemanaMensualitat());
    b = pow(a,lfDemanaMensualitat());
    c = b -1;
    TAE = c * 100;
    printf("El TAE total es %.2lf%% \n", TAE);

    return 0;
}

here you can see it questions the same and i put the same number

1 个答案:

答案 0 :(得分:7)

您拨打lfDemanaMensualitat()两次功能,并拨打printf(),这样您当然会打印两次。

如果您只想调用一次并存储值,您可以这样:

const double t = lfDemanaMensualitat();
const double a = (1 + lfDemanaTaxa()) / t;
const double b = pow(a, t);

然后像你已经做的那样计算cTAE。这只会将lfDemanaMensualitat()的结果保存在名为t的临时变量中。

顺便说一下,如果用户输入的内容与指定的转换不匹配,您应该知道scanf()可能会失败。在依赖输入之前,必须检查返回值以确保它成功。