如何使费率为任意数字.例如:rate=n



如何修复此代码?此外,我的问题是如何使利率为任意数字。例如: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;
}

代码中的问题是,即使小时数小于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是丑陋的,应该用符号常量的变量来代替。

此代码的一个更稳定的版本是:

#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;
}

此代码解决以下问题:

  1. 只有当工作时间超过40时,它才会计算额外的工资。其他人在这里正确地回答了这个问题,这要归功于他
  2. 它处理了最后一个printf()中缺少参数的错误,该错误用于打印pay值
  3. [可选]小时数和速率在逻辑上(很可能(总是正值,因此使用unsigned int而不是int
  4. [可选]pay的数据类型更改为unsigned long,以便在ratehours的值高到足以溢出unsigned int范围的情况下覆盖该场景

相关内容

最新更新