我写了一个函数equlibrium,它接受两个输入a(double)和i(int)。返回输出fEq。根据代码,函数应该在从主体调用时在屏幕上打印fEq的值。但我没有在屏幕上输出。该函数真的被调用了吗?或者在使用参数调用时是否存在数据类型错误?请帮我。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <sys/stat.h>
#include <string.h>
#include <dirent.h>
// define global variables
double w[3]= {2.0/3.0, 1.0/6.0, 1.0/6.0};
int nx=100;
int x, i;
double u[100],u0[100];
double fn[100][3];
double fEq,a;
//define function prototypes
equlibrium (double a,int i, double fEq);
// main program
int main(int argc, char **argv)
{
u[0] = 1.0e0;
u[nx] = 1.0e0;
i=0;
a = u[x];
equlibrium (a, i, fEq);
}
//function equlibrium
equlibrium (double a,int i, double fEq)
{
if(i=0)
{
fEq = (w[0]-1.0) * a;
printf("%lf\n", fEq);
}
else if(i=1)
{
fEq = (w[1] * a);
}
else
{
fEq = (w[2] * a);
}
return fEq;
}
答案 0 :(得分:2)
许多问题:
==
double
更正您的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <sys/stat.h>
#include <string.h>
#include <dirent.h>
// define global variables
double w[3]= {2.0/3.0, 1.0/6.0, 1.0/6.0};
int nx=99;
int x, i;
double u[100],u0[100];
double fn[100][3];
double fEq,a;
//define function prototypes
double equlibrium (double a,int i, double fEq);
// main program
int main(int argc, char **argv)
{
u[0] = 1.0e0;
u[nx] = 1.0e0;
i=0;
x=0;
a = u[x];
fEq = equlibrium (a, i, fEq);
printf("%f\n", fEq);
return 0;
}
//function equlibrium
double equlibrium (double a,int i, double fEq)
{
if(i==0)
{
fEq = (w[0]-1.0) * a;
printf("%lf\n", fEq);
}
else if(i==1)
{
fEq = (w[1] * a);
}
else
{
fEq = (w[2] * a);
}
return fEq;
}
答案 1 :(得分:2)
equlibrium (double a,int i, double fEq);
但它需要一种类型。因此,只要它返回双精度值fEq
,就添加double
作为返回类型。
double equlibrium (double a,int i, double fEq);
同样,更改函数体,使其具有类型:
double equlibrium (double a,int i, double fEq)
{
...
return fEq;
}
您的if
语句需要==
符号而不是=
才能进行比较。使用=
,您只需指定一个值,而不是比较。
在不需要时使用全局变量不是一个好习惯。最好使用局部变量并通过引用函数传递它们,以便它可以处理它们。