编程:定义职工工资结构体类型定义某车间职 工工资结构体数组。编写四个函数分别用于: ①输入全车间职工的工号、姓名、基本工 资、岗位工资、医疗住房基金与税金。 ②计算每一个职工实发工资,计算公式: 实发工资=基本工资+岗位工资-医疗住房基金 税金。 ③按实发工资降序排序。 ④输出全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金、税金与实发工资。 在主函数中定义职工工资数组,调用四个函数完成输入、计算实发工资、排序、输出工作。
时间: 2023-05-11 14:04:35 浏览: 83
好的,以下是我给出的答案:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_WORKERS 100
typedef struct {
int id;
char name[20];
float base_salary;
float position_salary;
float medical_fund;
float tax;
float actual_salary;
} Worker;
void input_workers(Worker workers[], int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个职工的工号、姓名、基本工资、岗位工资、医疗住房基金和税金:\n", i + 1);
scanf("%d%s%f%f%f%f", &workers[i].id, workers[i].name, &workers[i].base_salary, &workers[i].position_salary, &workers[i].medical_fund, &workers[i].tax);
}
}
void calculate_actual_salary(Worker workers[], int n) {
for (int i = 0; i < n; i++) {
workers[i].actual_salary = workers[i].base_salary + workers[i].position_salary - workers[i].medical_fund - workers[i].tax;
}
}
void sort_workers_by_actual_salary_desc(Worker workers[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (workers[i].actual_salary < workers[j].actual_salary) {
Worker temp = workers[i];
workers[i] = workers[j];
workers[j] = temp;
}
}
}
}
void output_workers(Worker workers[], int n) {
printf("工号\t姓名\t基本工资\t岗位工资\t医疗住房基金\t税金\t实发工资\n");
for (int i = 0; i < n; i++) {
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", workers[i].id, workers[i].name, workers[i].base_salary, workers[i].position_salary, workers[i].medical_fund, workers[i].tax, workers[i].actual_salary);
}
}
int main() {
int n;
printf("请输入职工人数:\n");
scanf("%d", &n);
if (n > MAX_WORKERS) {
printf("职工人数不能超过%d人\n", MAX_WORKERS);
return 1;
}
Worker workers[MAX_WORKERS];
input_workers(workers, n);
calculate_actual_salary(workers, n);
sort_workers_by_actual_salary_desc(workers, n);
output_workers(workers, n);
return 0;
}
```
这是一个简单的职工工资管理程序,使用了结构体和函数封装的思想。程序中定义了一个职工结构体,包含了职工的各种信息,如工号、姓名、基本工资、岗位工资、医疗住房基金、税金和实发工资。程序中还定义了四个函数,分别用于输入职工信息、计算实发工资、按实发工资降序排序和输出职工信息。在主函数中,我们定义了一个职工数组,调用四个函数完成了输入、计算实发工资、排序和输出工作。