2012-02-21 59 views
-1

我試圖做一個小sqrtfunc,以減輕我的功課今天在數學,但不知何故,沒有工作。你可以幫我嗎?該程序只是應該找到給定數量的sqrt。Ç小的代碼將無法正常工作。

#include <stdio.h> 
#include <math.h> 

double sqrtfunc(double x); 

int main(void) 
{ 
    double y; 
    scanf("%f", &y); 
    printf("%f", sqrtfunc(y)); 

    return 0; 
} 

double sqrtfunc(double x) { 
    double value; 
    value = sqrt(x); 
    return value; 
} 

非常感謝!

+2

什麼沒有工作?有沒有錯誤信息?它是否編譯?它是否要求一個號碼? – monksy 2012-02-21 21:33:44

+0

它不是做什麼的? – 2012-02-21 21:33:45

回答

5

使用%lf轉換規格讀取doublescanf%f打印doubleprintf

有浮點類型的printfscanf假對稱。

+0

謝謝。現在它工作正常。能否請你解釋一下,什麼是LF和F之間的差異,爲什麼它必須在這種情況下.D使用嗎? 如果我使用f,程序輸出的數字非常奇怪,像715648454和大量的零。我的意思是,我發佈了一些東西,一秒鐘後我得到了答案,在其他一些論壇中,我有時需要等待幾個小時,甚至幾天:D。) – geekkid 2012-02-21 21:38:05

+0

@geekkid'f'轉換說明符用於讀取'float'而不是'double'。 'double'通常是64位寬,其中'float'通常是32位:用'f'讀取時只會讀取'double'對象的32位。在技​​術上,函數調用是未定義的行爲,因爲您將不同的類型傳遞給「f」說明符所期望的類型。 – ouah 2012-02-21 21:44:45

+0

@geekkid:StackOverflow上不是一個論壇。這是一個問題答案網站。我們通常在這裏沒有擴大討論或開放式的「主題」。 – 2012-02-21 22:38:24