2010-09-04 77 views
1

我試圖用類似下面的rand()函數生成一些數字產生0和1之間RAND碼:問題,用C語言

int main() 
{ 
    int i=0 
    for(i=0;i<20;i++) 
    { 
    printf("%f\n",rand_md()); 
    } 
    return 0; 
} 



float rand_md() 
{ 
    return (float)rand()/(RAND_MAX+1.0); 
} 

但是當我運行gcc rand.c,我得到的錯誤如下: rand.c:在函數'main'中: rand.c:21:warning:格式'%f'需要輸入'double',但參數2輸入'int' rand.c:頂端級別: rand.c:36:錯誤:'rand_md'的衝突類型 rand.c:21:錯誤:之前的'rand_md'隱式聲明在這裏

我的代碼有什麼問題?

最好的問候,

回答

6

當您使用功能不首先聲明它,C假定它返回一個int。爲了解決這個問題,你必須在main()之前聲明方法簽名rand_md

添加這樣的事情main之前或在頭文件:

float rand_md(); 
1
double rand_md() 
{ 
    return (double)rand()/(RAND_MAX+1.0); 
} 

現在,rand_md返回double而不是float

另外,既然你沒有在你的文章中加入它,你應該在main()之前加入函數原型。您還忘記了在int i = 0中添加分號。更正後的代碼看起來是這樣的:

double rand_md();  

int main() 
{ 
    int i=0; 
    for(i=0;i<20;i++) 
    { 
    printf("%f\n",rand_md()); 
    } 
    return 0; 
} 

double rand_md() 
{ 
    return (double)rand()/(RAND_MAX+1.0); 
} 
0

您可以使用隨機的(數的最大尺寸)用於這一目的。