定义职工工资结构体类型定义某车间职工工资结构体数组。编写四个函数分别用于: ①输入全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金与税金。 ②计算每一个职工实发工资,计算公式:实发工资=基本工资+岗位工资-医疗住房基金-税金。 ③按实发工资降序排序。 ④输出全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金、税金与实发工资。 在主函数中定义职工工资数组,调用四个函数完成输入、计算实发工资、排序、输出工作。
时间: 2023-05-23 18:03:48 浏览: 87
好的,以下是C知道给出的答案:
职工工资结构体类型定义代码如下:
```c++
typedef struct{
int id; // 职工编号
char name[20]; // 职工姓名
float basic_wage; // 基本工资
float post_wage; // 岗位工资
float medical_fund; // 医疗基金
float housing_fund; // 住房基金
float tax; // 税金
float real_wage; // 实发工资
} Employee;
```
函数①:输入全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金与税金。
```c++
void input(Employee* employee, int size)
{
for(int i = 0; i < size; i++){
printf("请输入第%d个职工的信息:\n", i+1);
printf("工号:");
scanf("%d", &(employee[i].id));
printf("姓名:");
scanf("%s", employee[i].name);
printf("基本工资:");
scanf("%f", &(employee[i].basic_wage));
printf("岗位工资:");
scanf("%f", &(employee[i].post_wage));
printf("医疗基金:");
scanf("%f", &(employee[i].medical_fund));
printf("住房基金:");
scanf("%f", &(employee[i].housing_fund));
printf("税金:");
scanf("%f", &(employee[i].tax));
}
}
```
函数②:计算每一个职工实发工资。
```c++
void calculate(Employee* employee, int size)
{
for(int i = 0; i < size; i++){
employee[i].real_wage = employee[i].basic_wage + employee[i].post_wage - employee[i].medical_fund - employee[i].housing_fund - employee[i].tax;
}
}
```
函数③:按实发工资降序排序。
```c++
int cmp(const void* a, const void* b)
{
Employee* emp1 = (Employee*)a;
Employee* emp2 = (Employee*)b;
if(emp1->real_wage > emp2->real_wage){
return -1;
}
else if(emp1->real_wage < emp2->real_wage){
return 1;
}
else{
return 0;
}
}
void sort(Employee* employee, int size)
{
qsort(employee, size, sizeof(Employee), cmp);
}
```
函数④:输出全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金、税金与实发工资。
```c++
void output(Employee* employee, int size)
{
printf("\n全车间职工的工资信息如下:\n");
printf("----------------------------------\n");
printf("| %-5s| %-10s| %-10s| %-10s| %-10s| %-10s| %-10s|\n", "工号", "姓名", "基本工资", "岗位工资", "医疗基金", "住房基金", "实发工资");
printf("----------------------------------\n");
for(int i = 0; i < size; i++){
printf("| %-5d| %-10s| %-10.2f| %-10.2f| %-10.2f| %-10.2f| %-10.2f|\n", employee[i].id, employee[i].name, employee[i].basic_wage, employee[i].post_wage, employee[i].medical_fund, employee[i].housing_fund, employee[i].real_wage);
}
printf("----------------------------------\n");
}
```
在主函数中,我们定义了一个职工工资数组,调用上述函数即可:
```c++
#define SIZE 3
int main()
{
Employee staff[SIZE];
input(staff, SIZE); // 输入职工工资信息
calculate(staff, SIZE); // 计算实发工资
sort(staff, SIZE); // 按实发工资降序排序
output(staff, SIZE); // 输出职工工资信息
return 0;
}
```
C知道希望这个答案可以对您有所帮助,有任何问题都可以随时询问!