2017-09-12 92 views
0

我正在爲工資覈算編寫代碼。功能要求用戶工作時間和小時工資。另一個函數接受小時和費率作爲參數並計算並返回毛支付。然後將毛支付給一個計算並返回payrolltax(.22)的函數。然後調用一個函數接受毛支付和稅收作爲參數並返回netpay。最後將所有數據發送到將顯示所有數值(總時數,小時數,毛支付,稅款和淨支付)的函數。我的netpay正在顯示我0,而稅則顯示錯誤的答案。誰能告訴我我錯了哪裏?爲什麼我的netpay無法顯示答案?

/* Payroll Check */ 
#include <stdio.h> 

float askhoursworked(); 
float askhourlyrate(); 
float calculategrosspay(float hours,float rate); 
float calculatepayrolltax(float grosspay); 
float calculatenetpay(float grosspay,float tax); 
float displayallvalues(float ,float ,float,float ,float); 

int main() 
{ 
     float hours; 
     float rate; 
     float grosspay; 
     float tax; 
     float netpay; 
     float values; 

     hours=askhoursworked(); 
     rate= askhourlyrate(); 

     tax= calculatepayrolltax(grosspay); 
     netpay= calculatenetpay(grosspay,tax); 
     grosspay=calculategrosspay(hours, rate); 

     values= displayallvalues(hours, rate, tax, grosspay, netpay); 

     return 0; 
} 


float askhoursworked() 
{ 
     float hours; 
     printf("\n Please enter hours worked \t"); 
     scanf("%f",&hours); 

     return hours; 
} 

float askhourlyrate() 
{ 
    float rate; 
    printf("\n Please enter your payrate \t"); 
    scanf("%f",&rate); 

    return rate; 
} 

float calculategrosspay(float hours,float rate) 
{ 
    float grosspay; 
    grosspay=hours*rate; 

    return grosspay; 
} 

float calculatenetpay(float grosspay,float tax) 
{ 
    float netpay; 
    netpay=grosspay-tax; 

    return netpay; 
} 

float calculatepayrolltax(float grosspay) 
{ 
    float tax; 
    tax=grosspay*.22; 

    return tax; 
} 

float displayallvalues(float hours,float rate,float tax,float grosspay,float netpay) 
{ 
    printf("\n Your total hours are %.2f",hours); 
    printf("\n Your hourly rate %.2f",rate); 
    printf("\n Your grosspay is %.2f",grosspay); 
    printf("\n Your taxes are %.2f",hours); 
    printf("\n Your netpay is %.2f",netpay); 
} 
+0

格式是壞的 - 代碼不能被輕易讀取;( –

+0

不要修改代碼以修復錯誤您收到的答案告訴你問題是什麼之後 –

+0

請注意,您聲稱'displayallvalues( )'會返回一個值,但它不會,你不會使用不存在的結果賦值的變量,但這並不妨礙賦值是一個錯誤,函數應該定義爲返回'void'和'values'變量應該被移除,注意函數askhoursworked()應該同樣用'float askhoursworked(void)'和'askhourlyrate()'聲明(並且最好定義)。是這些函數的聲明,但沒有原型(C不是C++,規則不同) –

回答

1

在C語言中,使用單通編譯器。這意味着在這裏,訂單最重要。 您正在計算毛支付。並且您正在使用它來計算netpay和稅收。

這是正確的方式..

hours = askhoursworked(); 
rate = askhourlyrate(); 
grosspay = calculategrosspay (hours, rate); 
tax = calculatepayrolltax (grosspay); 
netpay = calculatenetpay (grosspay, tax); 

檢查它​​

編輯 您還印在錯誤的方式你的輸出。

printf ("\n Your total hours are %.2f", hours); 
    printf ("\n Your hourly rate %.2f", rate); 
    printf ("\n Your grosspay is %.2f", grosspay); 
    printf ("\n Your taxes are %.2f", tax); 
    printf ("\n Your netpay is %.2f", netpay); 
+0

非常感謝您對我的看法,我更改了我的代碼。還有一個問題可以告訴我爲什麼我的稅和我的總工時數相同? – michaelj

+0

[michaelj](https://stackoverflow.com/users/8595298/michaelj),我編輯了我的答案,我想你也忘了那個。檢查我上面的更新的答案。 –