合理设计程序,编写函数完成下列需求: 定义结构体保存员工信息 Struct employee { Char name[20]; Double salary[12]; Double sum } 请以此为元素定义1个包含10人信息的数组 (1)传入指针,完成信息的自动生成,姓名全用英文字母,格式如:aaaabbbbcccc,要求每个姓名由随机三个字母共15个字符构成,月薪范围5000~9999 (2)完成年薪的计算 (3)对所有数据进行年总工资的计算 (4)获取输入数据中年新最高的员工信息 (5)获取输入数据中实发工资最高的月份 (6)编写主函数测试上述功能函数。
时间: 2024-04-16 11:27:23 浏览: 131
以下是一个合理设计的程序,用于完成上述需求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
// 定义员工结构体
struct employee {
char name[20];
double salary[12];
double sum;
};
// 自动生成员工信息
void generateEmployee(struct employee* emp) {
// 生成随机姓名
for (int i = 0; i < 15; i++) {
emp->name[i] = 'a' + rand() % 26;
}
emp->name[15] = '\0';
// 生成随机月薪
for (int i = 0; i < 12; i++) {
emp->salary[i] = 5000 + (rand() % 5000);
}
}
// 计算年薪
double calculateYearlySalary(struct employee* emp) {
double sum = 0;
for (int i = 0; i < 12; i++) {
sum += emp->salary[i];
}
return sum;
}
// 计算年总工资
double calculateTotalYearlySalary(struct employee* employees, int size) {
double totalSum = 0;
for (int i = 0; i < size; i++) {
totalSum += employees[i].sum;
}
return totalSum;
}
// 获取年薪最高的员工信息
struct employee getHighestPaidEmployee(struct employee* employees, int size) {
struct employee highestPaid = employees[0];
for (int i = 1; i < size; i++) {
if (employees[i].sum > highestPaid.sum) {
highestPaid = employees[i];
}
}
return highestPaid;
}
// 获取实发工资最高的月份
int getHighestPaidMonth(struct employee* employees, int size) {
double highestPaid = employees[0].salary[0];
int highestMonth = 0;
for (int i = 0; i < size; i++) {
for (int j = 0; j < 12; j++) {
if (employees[i].salary[j] > highestPaid) {
highestPaid = employees[i].salary[j];
highestMonth = j;
}
}
}
return highestMonth + 1;
}
int main() {
srand(time(NULL));
// 定义包含10人信息的数组
struct employee employees[10];
// 自动生成员工信息
for (int i = 0; i < 10; i++) {
generateEmployee(&employees[i]);
employees[i].sum = calculateYearlySalary(&employees[i]);
}
// 计算年总工资
double totalYearlySalary = calculateTotalYearlySalary(employees, 10);
// 获取年薪最高的员工信息
struct employee highestPaidEmployee = getHighestPaidEmployee(employees, 10);
// 获取实发工资最高的月份
int highestPaidMonth = getHighestPaidMonth(employees, 10);
// 输出结果
printf("年总工资:%.2f\n", totalYearlySalary);
printf("年薪最高的员工信息:\n");
printf("姓名:%s\n", highestPaidEmployee.name);
printf("月薪:");
for (int i = 0; i < 12; i++) {
printf("%.2f ", highestPaidEmployee.salary[i]);
}
printf("\n");
printf("实发工资最高的月份:%d\n", highestPaidMonth);
return 0;
}
```
这个程序会生成10个员工的信息,包括姓名和每个月的工资。然后它会计算每个员工的年薪,并计算所有员工的年总工资。接着,它会找出年薪最高的员工以及实发工资最高的月份,并输出结果。
请注意,这只是一个示例程序,可能还需要根据实际需求进行适当的修改和优化。
阅读全文
相关推荐


















