我寫了一個函數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;
}
所有如果必須使用'=='。例如'if(i == 0)'。 – LPs
您的代碼存在幾個問題,如果您在編譯器中啓用警告(並對它們採取行動!),則會發現大多數問題。 –
你用什麼IDE來建立你的代碼?如果你還沒有一個,現在可以得到一個(NetBeans,Eclipse,CodeBlocks,MS Visual Studio等,都是免費的)。 IDE將允許您使用調試器;你可以在一行代碼上設置一個斷點,運行到該斷點,檢查變量的值,並逐行檢查你的代碼,看看它是如何執行的。這是解決所有這些問題的標準方法,而不僅僅是這個問題。 – Mawg