用C++实现定义职工工资结构体类型定义某车间职工工资结构体数组。编写四个函数分别用于: ①输入全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金与税金。 ②计算每一个职工实发工资,计算公式:实发工资=基本工资+岗位工资-医疗住房基金-税金。 ③按实发工资降序排序。 ④输出全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金、税金与实发工资。 在主函数中定义职工工资数组,调用四个函数完成输入、计算实发工资、排序、输出工作。
时间: 2023-05-26 08:02:12 浏览: 114
```
#include<stdio.h>
#include<string.h>
#define MAXN 100
//定义职工工资结构体类型
struct worker{
int num; //工号
char name[20]; //姓名
float salary; //基本工资
float bonus; //岗位工资
float fund; //医疗住房基金
float tax; //税金
float realSalary; //实发工资
};
int n; //员工数目
//输入函数
void input(struct worker a[]){
printf("请输入每个职工的信息:工号,姓名,基本工资,岗位工资,医疗住房基金,税金\n");
for(int i=0;i<n;i++){
scanf("%d %s %f %f %f %f",&a[i].num,a[i].name,&a[i].salary,&a[i].bonus,&a[i].fund,&a[i].tax);
}
}
//计算实发工资函数
void calRealSalary(struct worker a[]){
for(int i=0;i<n;i++){
a[i].realSalary=a[i].salary+a[i].bonus-a[i].fund-a[i].tax;
}
}
//排序函数
void sort(struct worker a[]){
int i,j;
struct worker temp;
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
if(a[j].realSalary<a[j+1].realSalary){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
//输出函数
void print(struct worker a[]){
printf("职工信息如下:\n");
for(int i=0;i<n;i++){
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",a[i].num,a[i].name,a[i].salary,a[i].bonus,a[i].fund,a[i].tax,a[i].realSalary);
}
}
int main(){
struct worker w[MAXN];
printf("请输入车间职工人数:");
scanf("%d",&n);
input(w);
calRealSalary(w);
sort(w);
print(w);
return 0;
}
```
阅读全文