2016-01-21 109 views
-2

我有一些非常簡單的代碼,我遇到了問題。這個程序只是計算一個公斤的重量並顯示出來。但是,每次運行時,打印的答案都會返回爲0.00000,但會返回正確的答案。有沒有人看到我的代碼有什麼問題?C程序每次打印0.00000,但返回正確的答案

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

int main(void) 
{ 
    float w; 
    float const wc=0.454; 

    printf("Enter your weight in pounds "); 
    scanf("%f", &w); 

    float wk = w * wc; 

    printf("Your weight in kilograms is: %f", &wk); 

    return(wk); 
} 
+4

只是一個快速的FYI:'main'函數的返回碼是程序的成功/失敗指示器。一般來說,零被認爲是成功的,一個小的正數是失敗的。 –

+1

編譯器警告。啓用它們並閱讀它們。 –

回答

9

您不需要將變量的地址作爲參數傳遞給格式說明符以打印該值。您需要更改

printf("Your weight in kilograms is: %f", &wk); 

printf("Your weight in kilograms is: %f", wk); 

這就是說,

  1. 經常檢查scanf()返回值。如果沒有,那麼在scanf("%f", &w);失敗的情況下,您將調用undefined behavior,因爲您最終將在float wk = w * wc;中使用單位本地變量float wk = w * wc;

  2. 請不要讓return看起來像一個函數。嘗試堅持return wk;

+0

和檢查返回值的方法是...(if(scanf(things)!= numOfThingsScaned){停止一切)} – rustypaper

相關問題