我該如何修復此代碼?而且,我的問題是如何使比率為任意數字。例如:rate = n
#include<stdio.h>
int main(){
int hours, rate, pay;
hours = 40;
rate = n;
printf("Type forty: ");
scanf("%d", &hours);
printf("Your desired rate: ");
scanf("%d", &rate);
pay = 40 * rate;
pay = hours*rate (hours-40)*rate*1.5;
printf("The result is %d");
return 0;
}
uj5u.com熱心網友回復:
你代碼中的問題是你總是計算加班時間,即使小時數小于40;這樣做,你為加班計算的太多了。
所以,而不是這個:
pay = 40 * rate;
pay = hours*rate (hours-40)*rate*1.5;
無論如何,第一行沒有任何影響,因為它被第二行覆寫,寫(例如)
if (hours <= 40) {
pay = hours * rate;
}
else {
pay = 40*rate (hours-40)*rate*1.5;
}
請注意,40在代碼中出現 3 次的文字是丑陋的,應該替換為符號常量的變數。
uj5u.com熱心網友回復:
此代碼的更穩定版本是:
#include<stdio.h>
int main(void){
unsigned int rate, hours;
const unsigned int maxHours = 40;
unsigned long pay = 0;
printf("Type forty (or more): ");
scanf("%i", &hours);
printf("Your desired rate: ");
scanf("%i", &rate);
if(hours > maxHours) {
pay = (hours*rate) (hours-maxHours)*rate*1.5;
}
else {
pay = hours*rate;
}
printf("The result is %lu", pay);
return 0;
}
此代碼解決了以下問題:
- 它只計算超過 40 小時的額外工資。這里其他答案正確識別的問題,歸功于他!
- 它處理了在最后一個
printf()要列印工資值的地方缺少引數的錯誤 - [可選] 小時數和費率在邏輯上(最有可能)總是正值,因此使用
unsigned int而不是int - [可選] 覆寫率值和小時值高到溢位范圍的場景
unsigned int
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/357599.html
標籤:C
下一篇:C時鐘程式
