用结构计算工资增量的C程序
C program for salary increment calculation using structure
我想为 C 程序编写代码,它将:
- 创建将存储员工详细信息的结构。
- 将 5 条不同的员工记录插入数据库。
- 如果服务年限增加 10%,则更新工资
是10年以上。否则,增加 7%。
- 显示所有员工的数据。
我的编码满足了项目1,2和4。对于项目3,我不知道如何编写编码。谁能赐教一下?
代码下方
#include <stdio.h>
#include <stdlib.h>
typedef struct{
char employee_name[30];
int employee_number;
int salary;
int service_year
} Employee;
int main()
{
int i, n=5;
Employee employees[n];
//Taking each employee detail as input
printf("Enter %d Employee Details \n \n",n);
for(i=0; i<5; i++){
printf("Employee %d:- \n",i+1);
//Name
printf("Name: ");
scanf("%s",employees[i].employee_name);
//ID
printf("Id: ");
scanf("%d",&employees[i].employee_number);
//Salary
printf("Salary: ");
scanf("%d",&employees[i].salary);
//Year of service_year
printf("Year of Service: ");
scanf("%d",&employees[i].service_year);
}
//Displaying Employee details
printf("-------------- All Employees Details ---------------\n");
for(i=0; i<n; i++){
printf("Employee Name \t: ");
printf("%s \n",employees[i].employee_name);
printf("Employee Number \t: ");
printf("%d \n",employees[i].employee_number);
printf("Salary \t: ");
printf("%d \n",employees[i].salary);
printf("Year of Service \t: ");
printf("%d \n",employees[i].service_year);
printf("\n");
}
return 0;
}
为了实现你的第三个目标,我只创建了一个方法来接收员工结构的地址,然后我检查他的服务年限,最后加上 10% 或 7%。在这种方法中,我在引入员工数据时直接增加了薪水,但是随时可以随时调用increment()
。
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char employee_name[30];
int employee_number;
float salary;
int service_year
} Employee;
void increment (Employee * current);
int main ()
{
int i, n = 5;
Employee employees[n];
//Taking each employee detail as input
printf ("Enter %d Employee Details \n \n", n);
for (i = 0; i < 5; i++)
{
printf ("Employee %d:- \n", i + 1);
//Name
printf ("Name: ");
scanf ("%s", employees[i].employee_name);
//ID
printf ("Id: ");
scanf ("%d", &employees[i].employee_number);
//Salary
printf ("Salary: ");
scanf ("%f", &employees[i].salary);
//Year of service_year
printf ("Year of Service: ");
scanf ("%d", &employees[i].service_year);
//printf ("Incrementing the salary according the years of service");
increment (&employees[i]);
}
//Displaying Employee details
printf ("-------------- All Employees Details ---------------\n");
for (i = 0; i < n; i++)
{
printf ("Employee Name \t: ");
printf ("%s \n", employees[i].employee_name);
printf ("Employee Number \t: ");
printf ("%d \n", employees[i].employee_number);
printf ("Salary \t: ");
printf ("%f \n", employees[i].salary);
printf ("Year of Service \t: ");
printf ("%d \n", employees[i].service_year);
printf ("\n");
}
return 0;
}
void increment (Employee * current)
{
if (current->service_year >= 10)
current->salary += current->salary * 0.1;
else
current->salary += current->salary * 0.07;
}
我使用随机员工获得的一个输出。对于我的商品,并检查这是否有效,他们所有人的工资都是 100。
Enter 5 Employee Details
Employee 1:-
Name: Toni
Id: 23
Salary: 100
Year of Service: 10
Employee 2:-
Name: Pedro
Id: 15
Salary: 100
Year of Service: 5
Employee 3:-
Name: Juan
Id: 78
Salary: 100
Year of Service: 15
Employee 4:-
Name: Ramon
Id: 55
Salary: 100
Year of Service: 1
Employee 5:-
Name: Ester
Id: 44
Salary: 100
Year of Service: 55
-------------- All Employees Details ---------------
Employee Name : Toni
Employee Number : 23
Salary : 110
Year of Service : 10
Employee Name : Pedro
Employee Number : 15
Salary : 107
Year of Service : 5
Employee Name : Juan
Employee Number : 78
Salary : 110
Year of Service : 15
Employee Name : Ramon
Employee Number : 55
Salary : 107
Year of Service : 1
Employee Name : Ester
Employee Number : 44
Salary : 110
Year of Service : 55
尝试使用浮点数作为salary
变量,因为与0.1
和0.07
相乘后,会丢失信息。
您还需要将 printf
和 scanf
中的格式说明符更改为 %f
,因为变量 salary
现在的类型是 float
。
这是指导您的代码片段。
员工结构
typedef struct
{
char employee_name[30];
int employee_number;
float salary;
int service_year
} Employee;
计算增量
// Calculate the increment in salary
for(i=0; i<5; i++){
if(employees[i].service_year >= 10)
employees[i].salary+=(0.1)*employees[i].salary;
else if(employees[i].service_year >=0 && employees[i].service_year < 10)
employees[i].salary+=(0.07)*employees[i].salary;
}
For item 3 i have no idea how to write the coding.
Update the salary by adding a 10% increment if the years of service is 10 years and more. Otherwise, add a 7% increment.
对于具有 .
的整数问题,我会避免浮点数学运算
添加辅助函数来计算加薪。
编程的一个关键部分是将任务划分为可管理的辅助函数。请注意下面的两个分别处理工资调整的一个单独方面。如果明年进行更复杂的计算调整并且不会弄乱其他代码,则调整起来很容易。
int increase_percent(int salary, int percent) {
int half = percent >= 0 ? 100/2 : -100/2;
return (salary * percent + half)/100; // add half for a rounded quotient
}
int increase_tenure(int salary, int years) {
int percent = years >= 10 ? 10 : 7;
return increase_percent(salary, percent);
}
// Usage
employees[i].salary += increase_tenure(employees[i].salary, employees[i].service_year);
我想为 C 程序编写代码,它将:
- 创建将存储员工详细信息的结构。
- 将 5 条不同的员工记录插入数据库。
- 如果服务年限增加 10%,则更新工资 是10年以上。否则,增加 7%。
- 显示所有员工的数据。
我的编码满足了项目1,2和4。对于项目3,我不知道如何编写编码。谁能赐教一下?
代码下方
#include <stdio.h>
#include <stdlib.h>
typedef struct{
char employee_name[30];
int employee_number;
int salary;
int service_year
} Employee;
int main()
{
int i, n=5;
Employee employees[n];
//Taking each employee detail as input
printf("Enter %d Employee Details \n \n",n);
for(i=0; i<5; i++){
printf("Employee %d:- \n",i+1);
//Name
printf("Name: ");
scanf("%s",employees[i].employee_name);
//ID
printf("Id: ");
scanf("%d",&employees[i].employee_number);
//Salary
printf("Salary: ");
scanf("%d",&employees[i].salary);
//Year of service_year
printf("Year of Service: ");
scanf("%d",&employees[i].service_year);
}
//Displaying Employee details
printf("-------------- All Employees Details ---------------\n");
for(i=0; i<n; i++){
printf("Employee Name \t: ");
printf("%s \n",employees[i].employee_name);
printf("Employee Number \t: ");
printf("%d \n",employees[i].employee_number);
printf("Salary \t: ");
printf("%d \n",employees[i].salary);
printf("Year of Service \t: ");
printf("%d \n",employees[i].service_year);
printf("\n");
}
return 0;
}
为了实现你的第三个目标,我只创建了一个方法来接收员工结构的地址,然后我检查他的服务年限,最后加上 10% 或 7%。在这种方法中,我在引入员工数据时直接增加了薪水,但是随时可以随时调用increment()
。
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char employee_name[30];
int employee_number;
float salary;
int service_year
} Employee;
void increment (Employee * current);
int main ()
{
int i, n = 5;
Employee employees[n];
//Taking each employee detail as input
printf ("Enter %d Employee Details \n \n", n);
for (i = 0; i < 5; i++)
{
printf ("Employee %d:- \n", i + 1);
//Name
printf ("Name: ");
scanf ("%s", employees[i].employee_name);
//ID
printf ("Id: ");
scanf ("%d", &employees[i].employee_number);
//Salary
printf ("Salary: ");
scanf ("%f", &employees[i].salary);
//Year of service_year
printf ("Year of Service: ");
scanf ("%d", &employees[i].service_year);
//printf ("Incrementing the salary according the years of service");
increment (&employees[i]);
}
//Displaying Employee details
printf ("-------------- All Employees Details ---------------\n");
for (i = 0; i < n; i++)
{
printf ("Employee Name \t: ");
printf ("%s \n", employees[i].employee_name);
printf ("Employee Number \t: ");
printf ("%d \n", employees[i].employee_number);
printf ("Salary \t: ");
printf ("%f \n", employees[i].salary);
printf ("Year of Service \t: ");
printf ("%d \n", employees[i].service_year);
printf ("\n");
}
return 0;
}
void increment (Employee * current)
{
if (current->service_year >= 10)
current->salary += current->salary * 0.1;
else
current->salary += current->salary * 0.07;
}
我使用随机员工获得的一个输出。对于我的商品,并检查这是否有效,他们所有人的工资都是 100。
Enter 5 Employee Details
Employee 1:-
Name: Toni
Id: 23
Salary: 100
Year of Service: 10
Employee 2:-
Name: Pedro
Id: 15
Salary: 100
Year of Service: 5
Employee 3:-
Name: Juan
Id: 78
Salary: 100
Year of Service: 15
Employee 4:-
Name: Ramon
Id: 55
Salary: 100
Year of Service: 1
Employee 5:-
Name: Ester
Id: 44
Salary: 100
Year of Service: 55
-------------- All Employees Details ---------------
Employee Name : Toni
Employee Number : 23
Salary : 110
Year of Service : 10
Employee Name : Pedro
Employee Number : 15
Salary : 107
Year of Service : 5
Employee Name : Juan
Employee Number : 78
Salary : 110
Year of Service : 15
Employee Name : Ramon
Employee Number : 55
Salary : 107
Year of Service : 1
Employee Name : Ester
Employee Number : 44
Salary : 110
Year of Service : 55
尝试使用浮点数作为salary
变量,因为与0.1
和0.07
相乘后,会丢失信息。
您还需要将 printf
和 scanf
中的格式说明符更改为 %f
,因为变量 salary
现在的类型是 float
。
这是指导您的代码片段。
员工结构
typedef struct
{
char employee_name[30];
int employee_number;
float salary;
int service_year
} Employee;
计算增量
// Calculate the increment in salary
for(i=0; i<5; i++){
if(employees[i].service_year >= 10)
employees[i].salary+=(0.1)*employees[i].salary;
else if(employees[i].service_year >=0 && employees[i].service_year < 10)
employees[i].salary+=(0.07)*employees[i].salary;
}
For item 3 i have no idea how to write the coding.
Update the salary by adding a 10% increment if the years of service is 10 years and more. Otherwise, add a 7% increment.
对于具有
添加辅助函数来计算加薪。
编程的一个关键部分是将任务划分为可管理的辅助函数。请注意下面的两个分别处理工资调整的一个单独方面。如果明年进行更复杂的计算调整并且不会弄乱其他代码,则调整起来很容易。
int increase_percent(int salary, int percent) {
int half = percent >= 0 ? 100/2 : -100/2;
return (salary * percent + half)/100; // add half for a rounded quotient
}
int increase_tenure(int salary, int years) {
int percent = years >= 10 ? 10 : 7;
return increase_percent(salary, percent);
}
// Usage
employees[i].salary += increase_tenure(employees[i].salary, employees[i].service_year);