编写一个函数实现对数组里的工资信息进行统计,要求返回平均工资
时间: 2024-05-08 10:19:02 浏览: 89
没有问题,我可以为您实现这个函数。以下是一种可能的实现:
```
def compute_avg_salary(salaries):
total_salary = sum(salaries)
num_employees = len(salaries)
if num_employees == 0:
return 0
else:
return total_salary / num_employees
```
这个函数接受一个工资数组作为输入,并计算出工资的总和和员工人数。如果员工人数为0,则函数返回0。否则,函数计算并返回平均工资。您可以将这个函数作为模块的一部分来使用,或者直接在您的代码中使用它。
相关问题
一个长度为n的double型数组salary里存放了n个人的工资信息。编写一个函数实现对数组里的工资信息进行统计,要求返回平均工资,然后在main函数里调用此函数,求salary里记录的工资信息的平均值。使用c++语言
在C++中,你可以定义一个函数`calculateAverage`来计算double型数组的平均值。首先,需要包含头文件`<iostream>`,然后定义数组并初始化,接着计算总和和数组元素个数,最后除以总个数得到平均值。以下是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
// 定义计算平均工资的函数
double calculateAverage(const std::vector<double>& salary) {
double sum = 0;
for (const auto& value : salary) {
sum += value;
}
return sum / salary.size(); // 返回平均值
}
int main() {
int n;
std::cout << "请输入工资人数: ";
std::cin >> n;
// 假设我们有一个动态大小的数组,但在实际项目中会用vector替换数组
std::vector<double> salary(n);
std::cout << "请输入每个人的工资: ";
for (size_t i = 0; i < n; ++i) {
std::cin >> salary[i];
}
// 调用函数计算平均工资
double averageSalary = calculateAverage(salary);
std::cout << "平均工资为: " << averageSalary << std::endl;
return 0;
}
```
在这个程序中,用户输入工资人数和每个员工的工资,然后通过`calculateAverage`函数计算并打印出平均工资。注意,由于题目要求使用数组,这里假设了可以接受用户输入创建动态数组,实际应用中通常会使用`std::vector`来替代。
用c语言编写一个简单的员工工资管理系统,定义结构体类型的数组存储员工的基本信息:工号、姓名、基本工资。要求编写自定义函数实现如下功能: (1)输入n名员工的信息:工号、姓名、基本工资; (2) 输出口名员工的信息:工号、姓名、基本工资; (2) 根据工号查找并输出某个员工的信息; (3)查找某两个工资金额范国内的所有员工并输出对 应信息; (4) 计算所有员工的平均工资; (5) 计算并输出工资最高的员工信息及工资最低的员 工信息; (6) 添加员工信息功能:若有新入职的员工,请将他们的信息存入结构体数组中; (7)删除员工信息功能:假如有员工离职,请将其信息删除并保证数组的连续性; (8) 请按照工号或姓名或工资从低到高的顺序输出所有 员工的信息。 (9)编写主函数,要求可通过功能菜单选择执行相应的功能。
以下是用C语言编写的员工工资管理系统,包括要求实现的所有功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EMPLOYEES 100
// 定义员工结构体类型
typedef struct Employee {
char id[10]; // 工号
char name[20]; // 姓名
float salary; // 基本工资
} Employee;
// 全局变量,存储所有员工信息的数组
Employee employees[MAX_EMPLOYEES];
// 全局变量,记录当前数组中已有的员工数量
int employeeCount = 0;
// 自定义函数:输入n名员工的信息
void inputEmployees() {
printf("请输入员工数量:");
scanf("%d", &employeeCount);
for (int i = 0; i < employeeCount; i++) {
printf("请输入第%d个员工的信息:\n", i+1);
printf("工号:");
scanf("%s", employees[i].id);
printf("姓名:");
scanf("%s", employees[i].name);
printf("基本工资:");
scanf("%f", &employees[i].salary);
}
}
// 自定义函数:输出n名员工的信息
void outputEmployees() {
printf("所有员工信息如下:\n");
printf("工号\t姓名\t基本工资\n");
for (int i = 0; i < employeeCount; i++) {
printf("%s\t%s\t%.2f\n", employees[i].id, employees[i].name, employees[i].salary);
}
}
// 自定义函数:根据工号查找并输出某个员工的信息
void outputEmployeeById(char* id) {
for (int i = 0; i < employeeCount; i++) {
if (strcmp(employees[i].id, id) == 0) {
printf("员工信息如下:\n");
printf("工号\t姓名\t基本工资\n");
printf("%s\t%s\t%.2f\n", employees[i].id, employees[i].name, employees[i].salary);
return;
}
}
printf("未找到工号为%s的员工\n", id);
}
// 自定义函数:查找某两个工资金额范围内的所有员工并输出对应信息
void outputEmployeesBySalaryRange(float minSalary, float maxSalary) {
printf("工资在%.2f~%.2f之间的员工信息如下:\n", minSalary, maxSalary);
printf("工号\t姓名\t基本工资\n");
for (int i = 0; i < employeeCount; i++) {
if (employees[i].salary >= minSalary && employees[i].salary <= maxSalary) {
printf("%s\t%s\t%.2f\n", employees[i].id, employees[i].name, employees[i].salary);
}
}
}
// 自定义函数:计算所有员工的平均工资
float getAverageSalary() {
float sum = 0;
for (int i = 0; i < employeeCount; i++) {
sum += employees[i].salary;
}
return sum / employeeCount;
}
// 自定义函数:计算并输出工资最高的员工信息及工资最低的员工信息
void outputEmployeeWithMaxAndMinSalary() {
int maxIndex = 0;
int minIndex = 0;
for (int i = 1; i < employeeCount; i++) {
if (employees[i].salary > employees[maxIndex].salary) {
maxIndex = i;
}
if (employees[i].salary < employees[minIndex].salary) {
minIndex = i;
}
}
printf("工资最高的员工信息如下:\n");
printf("工号\t姓名\t基本工资\n");
printf("%s\t%s\t%.2f\n", employees[maxIndex].id, employees[maxIndex].name, employees[maxIndex].salary);
printf("工资最低的员工信息如下:\n");
printf("工号\t姓名\t基本工资\n");
printf("%s\t%s\t%.2f\n", employees[minIndex].id, employees[minIndex].name, employees[minIndex].salary);
}
// 自定义函数:添加员工信息功能
void addEmployee() {
if (employeeCount >= MAX_EMPLOYEES) {
printf("员工数量已达到上限,无法添加新员工\n");
return;
}
printf("请输入新员工的信息:\n");
printf("工号:");
scanf("%s", employees[employeeCount].id);
printf("姓名:");
scanf("%s", employees[employeeCount].name);
printf("基本工资:");
scanf("%f", &employees[employeeCount].salary);
employeeCount++;
}
// 自定义函数:删除员工信息功能
void deleteEmployee(char* id) {
for (int i = 0; i < employeeCount; i++) {
if (strcmp(employees[i].id, id) == 0) {
for (int j = i; j < employeeCount - 1; j++) {
employees[j] = employees[j+1];
}
employeeCount--;
printf("工号为%s的员工信息已删除\n", id);
return;
}
}
printf("未找到工号为%s的员工,无法删除\n", id);
}
// 自定义函数:按照工号或姓名或工资从低到高的顺序输出所有员工的信息
void outputEmployeesByOrder() {
int order = 0;
printf("请选择排序方式:\n");
printf("1.按照工号排序\n");
printf("2.按照姓名排序\n");
printf("3.按照工资排序\n");
scanf("%d", &order);
printf("所有员工信息如下:\n");
printf("工号\t姓名\t基本工资\n");
if (order == 1) { // 按照工号排序
for (int i = 0; i < employeeCount; i++) {
for (int j = i+1; j < employeeCount; j++) {
if (strcmp(employees[i].id, employees[j].id) > 0) {
Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
}
}
}
else if (order == 2) { // 按照姓名排序
for (int i = 0; i < employeeCount; i++) {
for (int j = i+1; j < employeeCount; j++) {
if (strcmp(employees[i].name, employees[j].name) > 0) {
Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
}
}
}
else if (order == 3) { // 按照工资排序
for (int i = 0; i < employeeCount; i++) {
for (int j = i+1; j < employeeCount; j++) {
if (employees[i].salary > employees[j].salary) {
Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
}
}
}
for (int i = 0; i < employeeCount; i++) {
printf("%s\t%s\t%.2f\n", employees[i].id, employees[i].name, employees[i].salary);
}
}
// 主函数
int main() {
int option = 0;
char id[10];
float minSalary, maxSalary;
while (1) {
printf("请选择功能:\n");
printf("1.输入n名员工的信息\n");
printf("2.输出n名员工的信息\n");
printf("3.根据工号查找并输出某个员工的信息\n");
printf("4.查找某两个工资金额范围内的所有员工并输出对应信息\n");
printf("5.计算所有员工的平均工资\n");
printf("6.计算并输出工资最高的员工信息及工资最低的员工信息\n");
printf("7.添加员工信息\n");
printf("8.删除员工信息\n");
printf("9.按照工号或姓名或工资从低到高的顺序输出所有员工的信息\n");
printf("0.退出程序\n");
scanf("%d", &option);
switch (option) {
case 1:
inputEmployees();
break;
case 2:
outputEmployees();
break;
case 3:
printf("请输入要查找的员工工号:");
scanf("%s", id);
outputEmployeeById(id);
break;
case 4:
printf("请输入要查找的工资范围(最小值 最大值):");
scanf("%f %f", &minSalary, &maxSalary);
outputEmployeesBySalaryRange(minSalary, maxSalary);
break;
case 5:
printf("所有员工的平均工资为%.2f\n", getAverageSalary());
break;
case 6:
outputEmployeeWithMaxAndMinSalary();
break;
case 7:
addEmployee();
break;
case 8:
printf("请输入要删除的员工工号:");
scanf("%s", id);
deleteEmployee(id);
break;
case 9:
outputEmployeesByOrder();
break;
case 0:
printf("程序已退出\n");
return 0;
default:
printf("无效的选项,请重新输入\n");
}
}
return 0;
}
```
使用时可以在主函数中调用不同的功能函数来完成相应的操作。每个自定义函数都实现了一个具体的功能,例如输入员工信息、输出员工信息、查找员工信息等等。主函数通过一个循环不断等待用户输入选项,根据用户的选择调用相应的功能函数。
阅读全文