c语言设计查找工资低/高于平均工资的老师 的姓名和院系
时间: 2024-09-22 08:07:26 浏览: 29
在 C 语言中,要实现这个功能,你需要先定义一个结构体来存储老师的姓名和院系信息,以及工资数据。然后你可以创建一个数组或者动态数组来存储这些老师的信息,并计算出所有老师的平均工资。接下来,通过遍历数组,可以分别找出工资低于平均工资和高于平均工资的老师并记录他们的姓名和院系。
以下是简单的步骤:
1. 定义一个结构体 Teacher,包含姓名(name),院系(department)和工资(salary)字段:
```c
typedef struct {
char name[50];
char department[50];
int salary;
} Teacher;
```
2. 创建一个Teacher类型的数组,初始化一些老师的数据:
```c
Teacher teachers[] = {
{"张三", "计算机科学", 4000},
// ...其他老师的记录...
};
```
3. 计算平均工资:
```c
double average_salary = 0;
int num_teachers = sizeof(teachers) / sizeof(teachers[0]);
for (int i = 0; i < num_teachers; i++) {
average_salary += teachers[i].salary;
}
average_salary /= num_teachers;
```
4. 遍历数组,分别找到工资低于和高于平均工资的老师:
```c
int low_salary_count = 0;
int high_salary_count = 0;
char *low_names[] = {NULL}; // 存储低薪老师名字的数组
char *high_names[] = {NULL}; // 存储高薪老师名字的数组
// 判断并更新
for (int i = 0; i < num_teachers; i++) {
if (teachers[i].salary < average_salary && !low_names[low_salary_count]) {
low_names[low_salary_count++] = teachers[i].name;
}
else if (teachers[i].salary > average_salary && !high_names[high_salary_count]) {
high_names[high_salary_count++] = teachers[i].name;
}
}
// 输出结果(假设low_names和high_names数组大小足够)
printf("工资低于平均工资的老师有:\n");
for (int j = 0; j < low_salary_count; j++) {
printf("%s (%s)\n", low_names[j], teachers[j].department);
}
printf("\n工资高于平均工资的老师有:\n");
for (int j = 0; j < high_salary_count; j++) {
printf("%s (%s)\n", high_names[j], teachers[j].department);
}
```
请注意,这只是一个基本示例,实际应用中可能需要更复杂的错误处理和动态内存分配。
阅读全文