我正在尝试创建一个程序,该程序将基于一组预设数字来计算数字。我已经设法做到了,但是,我需要将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;
}
答案 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(¶m);
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;
}