好的,以下是根据你的要求编写的C语言代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[50];
int age;
char address[100];
double salary;
} Teacher;
void inputTeacherInfo(Teacher* teachers, int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个教师的信息:\n", i+1);
printf("工号:");
scanf("%d", &(teachers[i].id));
getchar(); // 消耗输入缓冲区中的回车符
printf("姓名:");
gets(teachers[i].name);
printf("年龄:");
scanf("%d", &(teachers[i].age));
getchar(); // 消耗输入缓冲区中的回车符
printf("家庭住址:");
gets(teachers[i].address);
printf("工资:");
scanf("%lf", &(teachers[i].salary));
getchar(); // 消耗输入缓冲区中的回车符
printf("\n");
}
}
void calculateTotalAndAverageSalary(Teacher* teachers, int n, double* total, double* average) {
*total = 0.0;
for (int i = 0; i < n; i++) {
*total += teachers[i].salary;
}
*average = *total / n;
}
int main() {
int n;
printf("请输入教师的数量:");
scanf("%d", &n);
Teacher* teachers = (Teacher*)malloc(sizeof(Teacher) * n);
inputTeacherInfo(teachers, n);
double totalSalary, averageSalary;
calculateTotalAndAverageSalary(teachers, n, &totalSalary, &averageSalary);
printf("教师们的总工资为:%.2lf\n", totalSalary);
printf("教师们的平均工资为:%.2lf\n", averageSalary);
free(teachers);
return 0;
}
编写这个程序的主要思路如下:
1. 首先定义了一个`Teacher`结构体,用来表示教师的信息,包括工号、姓名、年龄、家庭住址和工资。
2. 在`inputTeacherInfo`函数中,使用循环依次输入每个教师的信息,并存储到相应的结构体变量中。
3. 在`calculateTotalAndAverageSalary`函数中,使用循环遍历所有教师的工资,并累加到总工资变量中。最后计算平均工资并保存到指针变量中。
4. 在`main`函数中,首先读取教师的数量,并根据数量动态分配内存空间存储教师的信息。然后调用`inputTeacherInfo`函数输入教师的信息。
5. 再调用`calculateTotalAndAverageSalary`函数计算总工资和平均工资,并最后打印输出结果。
6. 最后释放动态分配的内存空间。
希望这个代码能够满足你的需求,如果有任何疑问,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |