2017-05-14 63 views
-1

我想讓這段代碼運行,我試過了這兩種方式,但無濟於事。其目的是使用scanf接收輸入並使用printf輸出語句。我收到的錯誤消息是編譯器只是掛起。C++主要功能和程序

另外,我不使用任何數學函數,例如平方根或功率

測試用例和期望答案

輸入1:1.41421356237

輸出1:圓的面積是3.141590

輸入2:5.65

輸出2:圓的面積爲50.143703

試驗1

#include <stdio.h> 
double function(double a){ 
    double area; 
    area = 3.14159*((a/2)*(a/2)*2); 
    return area; 
} 

int main(void){ 

    double a; 
    scanf("%f",a); 
    double result = function(a); 
    printf("Area of the circle is %f\n",result); 
    return 0; 
} 

試驗2

#include <stdio.h> 
int main(void){ 


    scanf("%f",a); 
    area = 3.14159*((a/2)*(a/2)*2); 
    printf("Area of the circle is %f\n",area); 
    return 0; 
} 

希望得到任何幫助,不知道爲什麼功能無法正常工作。感謝您的時間。

+1

看起來像第二個缺少'double area;'和'double a;' – user4581301

+2

如果你的編譯器掛在這個代碼上,你可能應該得到一個不同的代碼。任何工作編譯器都應該在此代碼上生成一些錯誤消息。參見例如[here](http://ideone.com/K8BcVK) – user463035818

+0

將'scanf(「%f」,a);''轉換爲'scanf(「%f」,&a);'這個代碼與什麼有關C++和BTW?它看起來像普通的c代碼給我 –

回答

2

在你的第一次試驗就需要你scanf("%f",a);行更改爲:

scanf("%lf",&a); 

因爲雙正確的類型說明符是%lf代表「長漂」。你也需要發送&a作爲參數,因爲scanf需要一個地址而不是一個值。二審同樣的事情。