很抱歉,我只是在学c,也许很容易解决,但我不知道怎么解决
在代码中,我只有一个printf,但是在终端中,同样的问题显示了两次。但最终的结果是正确的。

#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;
}

最佳答案

您调用lfDemanaMensualitat()函数两次,它只调用一次printf(),所以您当然会有两个打印输出。
如果您只想调用一次并存储值,可以这样做:

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

然后像你已经做的那样计算cTAE。这只是将lfDemanaMensualitat()的结果保存在名为t的临时变量中。
顺便说一下,如果用户输入的内容与指定的转换不匹配,那么scanf()可能会失败。在依赖输入之前,必须检查返回值以确保成功。

关于c - 为什么要问同样的问题,但是在代码中只有1个printf()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46663874/

10-12 01:22