- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 C 语言开发一个员工工资程序,我正在尝试找到一种更好的方法来组织计算小时工工资的代码。我想使用 switch 语句,而不是大量的 if 语句。我只是想知道这是否可能?这些案例需要一个值还是可以保留为空?例如,我可以只使用“case:”而不是“case value1:”吗?我知道,如果我确实使用 switch 语句,我可能必须使用 if 来验证用户输入的内容是否有效。或者我应该坚持一堆如果?
如果您想知道,以下是我需要遵循的指示:
编写一个程序来计算每个员工的周薪。你不知道提前确定员工数量。每种员工类型都有自己的薪资代码:
经理1个
2 小时工
3 佣金工作人员
4 为计件工。
编写一个单独的函数来处理每种支付代码类型。使用开关根据该员工的工资代码计算该员工的工资。之内开关,提示用户输入适当的信息程序需要根据每个员工的工资代码计算该员工的工资。
酌情添加合理性检查(例如,工资在 0 - 100000 之间,工作时间在 0 – 84 之间,时薪在 0 – 250 之间,每周销售额0 – 1000000 之间,件数 1 – 1000 之间,每件工资0.01 – 1000 之间。使用常量)。
以下是程序常量: #包括
// constants
#define MANAGERS 1
#define HOURLY_WORKERS 2
#define COMMISSION_WORKERS 3
#define PIECEWORKERS 4
#define STOP_PROGRAM -1
#define COMMISSION_PERCENT 0.057
#define COMMISSION_PAY 250
#define OVERTIME_HOURS 1.5
#define MAX_HOURS_WORKED 40
这是我迄今为止为小时工函数编写的代码:
void calcHourlyWorkerPay()
{
float hourlyPayRate;
int totalHoursWorked;
float totalPay;
printf("You entered 2 for Hourly Worker.\n\n");
printf("Enter hourly pay rate.\n"
"(Entry must be between 0 and 250): ");
scanf ("%f", &hourlyPayRate);
printf("Enter total hours worked.\n"
"(Entry must be between 0 and 84): ");
scanf ("%d", &totalHoursWorked);
if ((totalHoursWorked <= MAX_HOURS_WORKED) && (totalHoursWorked >= 84))
{
}
}
我问的原因是因为我想为此添加验证,如果用户输入一个不在 0 到 84 之间的数字,它会说“输入无效,请输入 0 到 84 之间的数字。 ”我还想添加验证,如果用户输入的每小时费率不在 0 到 250 之间,它会显示类似“条目无效,请输入 0 到 250 之间的数字”之类的内容。我希望我没有让任何人感到困惑。我可能犯了一些错误,我应该指出我对 C 编程非常陌生。
已编辑
我将 if 语句编辑如下:
if (((totalHoursWorked >= 0) && (totalHoursWorked <= 84)) && ((hourlyPayRate >= 0) && (hourlyPayRate <= 250)))
{
totalPay = totalHoursWorked * hourlyPayRate;
}
else if ((totalHoursWorked <= 0) || (totalHoursWorked >= 84))
{
printf("\n\nINVALID!!! Total hours worked MUST be between 0 and 84.\n\n");
printf("Enter total hours worked.\n"
"(Entry must be between 0 and 84): ");
scanf ("%d", &totalHoursWorked);
}
else if ((hourlyPayRate <= 0) || (hourlyPayRate >= 250))
{
printf("\n\nINVALID!!! Hourly pay rate MUST be between 0 and 250.\n\n");
printf("Enter hourly pay rate.\n"
"(Entry must be between 0 and 250): ");
scanf ("%f", &hourlyPayRate);
}
else
{
totalPay = (MAX_HOURS_WORKED * hourlyPayRate) + ((hoursWorked - MAX_HOURS_WORKED) * hourlyPayRate * OVERTIME_HOURS);
}
这是正确的吗?它会起作用吗?
最佳答案
首先,您要检查一个表达式中的 if (totalHoursWorked >= 0) 以及“else”条件中的 (totalHoursWorked <= 0)。与零相等的检查应该只存在于这些检查之一中。您还应该分解出常见的表达式来简化它们 - 例如,您已经检查了诸如totalHoursWorked之类的值是否在一种条件下的范围内,但是如果表达式计算结果为 false,您将进一步重新检查它,因为您已经过于复杂了通过将其与 hourlyPayRate 的检查结合起来。如果您需要知道涉及变量的表达式是否失败,则应将该变量设为该表达式中的唯一变量,并保存对其他值的健全性检查,直到第一个检查通过。
如果重入尝试中的值超出范围,也不清楚会发生什么情况。如果失败,它会要求您重新输入该值,但不会再次检查。您需要将输入和验证逻辑放入一个构造中,该构造将重复直到值在范围内(或者它们表明它们想要退出),无论输入无效值多少次。
由于重点关注常量的使用,因此您用于验证检查的值也应该是常量。
关于C - Switch 语句与员工薪酬的 If 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26080249/
我希望通过 Workday API 检索 Workday 工作人员(又名员工)Web 配置文件 URL。用例是我正在构建一个聊天机器人来检索用户信息,并且我希望能够深度链接到工作人员(员工)网络配置文
我很困惑我希望员工 ID 是自动生成的前缀格式我知道在 sql server 中触发之前是可能的我正在关注帖子 http://www.aspdotnet-suresh.com/2012/04/set-
我读了一个教程,其中有这个结构: struct { char Name[25]; int Age; float SkillRating; } Employee; defines
我有两个表 employee(name,id) ,其中包含所有员工和另一个表 reader(id,date) ,它给出了日期和哪个员工在场。我如何找到一定范围内的缺席者列表日期? 对于特定日期,我能够
我需要员工 ID 的标准正则表达式,例如 EMP015 015EMP EMP_015 E_015 EMP-015 EMP.VIS EMP/056 基本上它应该允许 . 或 _ 或 - 或 / 在字母数
我是 Angular 的新手,正在使用 Angular 编写代码,我正在观看视频教程。我注意到我的代码中有一些东西,但我无法理解它是如何工作的。 我想知道这段代码是什么意思组件上的“员工:员工 []”
下面从HR角度,来分析员工离职成本,欢迎大家留言讨论。 一个员工离职后留下的坑,并不是再找一个人填上就万事大吉了。 一般来说,核心人才的流失,至少有1-2个月的招聘期、3个月的适应期,6个月的融入期;
我有两个表 Employee 和 Department 此图像显示每个员工的经理。我想编写一个 SQL 查询,为我提供所有主管(经理、经理的经理......)的列表。 我只想要一个列,在给定特定员工时
我想将 ER 图的这一部分转换为关系模型。我们有一个三元关系,它说的是以下内容: 1 位客户将 1 个项目提供给 -> 多个开发人员 1 位客户分配给 1 位开发人员 -> 多个项目 1 个开发人员被
我将要开发一个应用程序,该应用程序将使用一些基于 SOAP 的 Web 服务框架。我做了一些研究,我有点喜欢 Axis2C 框架,但在某些主题中,我发现原来的 Axis2C 实现存在内存泄漏问题,并且
我的 SQL 数据库中有两个表: 公司: ID(自增) 姓名 地址 ... 员工: ID(自增) 公司编号 internal_id 姓名 姓氏 问题是我想要一个与他们所属的公司相关的员工 ID (in
我试图在堆栈溢出和谷歌上找到这个问题的答案,但没有找到。如果有问题需要更正或重复问题,请告诉我。 当我计算员工对象 (emp_obj) 和员工类的大小时,在这两种情况下我都得到了 4 个字节。但是我不
问题 如何在 Angular 员工 component.html 上返回 EmployeeCode ? 示例数据引用表 Code tableName FieldName LabelText
我是 hibernate 新手,正在使用 hibernate 版本 4.3.4 JAR 文件。我正在尝试使用 intelliJ 社区版中的 mySQL 服务器执行简单的 Hibernate 程序。以下
我正在使用 laravel 5.4 和 Yajra Datatable,但我无法使其工作..我遇到了“Uncaught TypeError: $(...).DataTable is not a fun
我想创建一个小型示例应用程序,它可以读取我的员工徽章并将其显示在屏幕上(或者如果我可以复制它就更好了,这样我们就可以使用我们的手机徽章而不是我们的塑料身份证) 几个问题1. 这在技术上可行吗?如果是这
我有一个 person 对象,需要将它存储为 byte[] 并再次检索该 byte[] 并转换为 person 对象 并且 BinaryFormatter 在 Silverlight 中不可用 最佳答
最近开始学习oracle和sql。 在学习的过程中,我遇到了几个问题,我的 friend 在接受采访时被问到这些问题。 SELECT * FROM Employees WHERE NULL IS N
当我执行以下命令来创建分片时: mysqlfabric sharding add_table 1 employees.employees emp_no 我收到以下错误: DatabaseError:
这是我的表格 门票 tic_id, tic_cat tic_priority tic_cus tic_date tic_title tic_
我是一名优秀的程序员,十分优秀!