定义职工工资结构体类型定义某车间职工工资结构体数组。编写四个函数分别用于: ①输入全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金与税金。 ②计算每一个职工实发工资,计算公式:实发工资=基本工资+岗位工资-医疗住房基金-税金。 ③按实发工资降序排序。 ④输出全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金、税金与实发工资。 在主函数中定义职工工资数组,调用四个函数完成输入、计算实发工资、排序、输出工作。
时间: 2023-05-29 07:04:27 浏览: 64
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
// 定义职工工资结构体
typedef struct {
char id[10]; // 工号
char name[20]; // 姓名
float basic_wage; // 基本工资
float post_wage; // 岗位工资
float medical_fund; // 医疗住房基金
float tax; // 税金
float real_wage; // 实发工资
} Employee;
// 输入全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金与税金
void input(Employee *employees, int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个职工的信息:\n", i + 1);
printf("工号:");
scanf("%s", employees[i].id);
printf("姓名:");
scanf("%s", employees[i].name);
printf("基本工资:");
scanf("%f", &employees[i].basic_wage);
printf("岗位工资:");
scanf("%f", &employees[i].post_wage);
printf("医疗住房基金:");
scanf("%f", &employees[i].medical_fund);
printf("税金:");
scanf("%f", &employees[i].tax);
}
}
// 计算每一个职工实发工资
void calculate(Employee *employees, int n) {
for (int i = 0; i < n; i++) {
employees[i].real_wage = employees[i].basic_wage + employees[i].post_wage - employees[i].medical_fund - employees[i].tax;
}
}
// 按实发工资降序排序
void sort(Employee *employees, int n) {
Employee temp;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (employees[j].real_wage < employees[j + 1].real_wage) {
temp = employees[j];
employees[j] = employees[j + 1];
employees[j + 1] = temp;
}
}
}
}
// 输出全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金、税金与实发工资
void output(Employee *employees, int n) {
printf("工号\t姓名\t基本工资\t岗位工资\t医疗住房基金\t税金\t实发工资\n");
for (int i = 0; i < n; i++) {
printf("%s\t", employees[i].id);
printf("%s\t", employees[i].name);
printf("%.2f\t", employees[i].basic_wage);
printf("%.2f\t", employees[i].post_wage);
printf("%.2f\t", employees[i].medical_fund);
printf("%.2f\t", employees[i].tax);
printf("%.2f\n", employees[i].real_wage);
}
}
int main() {
Employee employees[MAX];
int n;
printf("请输入职工人数:");
scanf("%d", &n);
input(employees, n); // 输入职工信息
calculate(employees, n); // 计算实发工资
sort(employees, n); // 按实发工资降序排序
output(employees, n); // 输出职工信息
return 0;
}
阅读全文