如何计算函数中的答案,然后从main()函数中打印出来?

时间:2018-10-10 19:58:49

标签: c

我正在尝试创建一个程序,该程序将基于一组预设数字来计算数字。我已经设法做到了,但是,我需要将printf部分显示在main()函数中,而不是在进行计算的函数中,而且我不太确定该怎么做。

我试图将printf移到main的下面,但是它说未定义变量。在公式计算完成后,我还尝试过放置main(),但这也不起作用。

下面的代码可以实现我想要的功能,除了print if位于方程函数中,而不是位于主函数中,这是我不太确定该怎么做的事实。

我的代码:

    #include <stdio.h>

    void equation(double Rstar, double fp, int ne, double f1, double 
    fi, double fc, int L)
    {
        int N = Rstar * fp * ne * f1 * fi * fc * L;
        printf("N=%d, Rstar=%.1f, fp=%.1f, ne=%d, f1=%.1f, fi=%.1f, fc=%.1f, L=%d",N,Rstar,fp,ne,f1,fi,fc,L);

    }

    int main(int argc, char **argv)
    {
        equation(1.0,0.2,1,1.0,1.0,0.1,1000);
        return 0;
    }

3 个答案:

答案 0 :(得分:1)

您应该让函数返回结果如下:

int equation(double Rstar, double fp, int ne, double f1, double 
fi, double fc, int L)
{
    int N = Rstar * fp * ne * f1 * fi * fc * L;
    return N;
}

int main(int argc, char **argv)
{
    int N = equation(1.0,0.2,1,1.0,1.0,0.1,1000);
    printf("N: %d\n", N);
    return 0;
}

请注意,函数返回类型已从 void 更改为 int

答案 1 :(得分:0)

您可以将equation()函数声明为int类型,然后返回N。main()然后可以从那里说出X = equation ...printf()。 / p>

答案 2 :(得分:0)

让您的函数返回计算的结果,并将返回的值打印在main中:

#include <stdio.h>

int equation(double Rstar, double fp, int ne, double f1, double 
fi, double fc, int L)
{
    int N = Rstar * fp * ne * f1 * fi * fc * L;

    return N;
}

int main(int argc, char **argv)
{
    int N = equation(1.0,0.2,1,1.0,1.0,0.1,1000);

    printf("N=%d, Rstar=1.0, fp=0.2, ne=1, f1=1.0, fi=1.0, fc=0.1, L=1000",N);

    return 0;
}

但是,我建议定义一个struct来保存所有输入参数,然后函数equation将获得指向该结构的指针,而不是7个参数。

示例:

#include <stdio.h>

typedef struct equ_input_t
{
    double rStart;
    double fp;
    int ne;
    double f1;
    double fi;
    double fc;
    int L;
} equ_input_t;

int equation(const equ_input_t *input)
{
    int N = input->rStart * input->fp * input->ne * input->f1 * input->fi * input->fc * input->L;

    return N;
}

int main(int argc, char **argv)
{
    equ_input_t param = {.rStart = 1.0, 
                         .fp     = 0.2, 
                         .ne     = 1, 
                         .f1     = 1.0, 
                         .fi     = 1.0, 
                         .fc     = 0.1, 
                         .L      = 1000 };

    int N = equation(&param);

    printf("N=%d, Rstar=%.1f, fp=%.1f, ne=%d, f1=%.1f, fi=%.1f, fc=%.1f, L=%d", 
            N, param.rStart, param.fp, param.ne, param.f1, param.fi, param.fc, param.L);

    return 0;
}