c语言有50名教师记录,每条记录包括工号(4位数)、姓名(长度不超过10个汉字,一个汉字用2个字节编码)、性别、12个月工资(月工资是实数)。 1. 设计结构体类型,并取名 2. main函数负责输入、调用和输出 3. 统计每位教师的平均工资(将平均工资作为结构体成员) void ave(结构体类型名字 *a ,int n); 4. 根据平均工资从小到大排序记录 void sort(结构体类型名字 *a,int n);
时间: 2024-02-09 18:11:12 浏览: 49
1. 结构体类型定义如下:
```
struct Teacher {
int id; // 工号
char name[20]; // 姓名
char gender; // 性别
double salary[12]; // 12个月工资
double avgSalary; // 平均工资
};
```
2. main函数实现如下:
```
#include <stdio.h>
#include <string.h>
struct Teacher {
int id; // 工号
char name[20]; // 姓名
char gender; // 性别
double salary[12]; // 12个月工资
double avgSalary; // 平均工资
};
void ave(struct Teacher *a, int n);
void sort(struct Teacher *a, int n);
int main() {
struct Teacher teachers[50];
// 输入教师信息
int n;
printf("请输入教师人数(不超过50):");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d位教师的信息:\n", i + 1);
printf("工号:");
scanf("%d", &teachers[i].id);
printf("姓名:");
scanf("%s", teachers[i].name);
printf("性别:");
scanf(" %c", &teachers[i].gender);
printf("12个月工资:");
for (int j = 0; j < 12; j++) {
scanf("%lf", &teachers[i].salary[j]);
}
}
// 计算每位教师的平均工资
ave(teachers, n);
// 根据平均工资从小到大排序记录
sort(teachers, n);
// 输出教师信息
printf("\n教师信息(按平均工资从小到大排序):\n");
for (int i = 0; i < n; i++) {
printf("工号:%d,姓名:%s,性别:%c,平均工资:%.2f\n",
teachers[i].id, teachers[i].name, teachers[i].gender, teachers[i].avgSalary);
}
return 0;
}
```
3. 统计每位教师的平均工资:
```
void ave(struct Teacher *a, int n) {
for (int i = 0; i < n; i++) {
double sum = 0;
for (int j = 0; j < 12; j++) {
sum += a[i].salary[j];
}
a[i].avgSalary = sum / 12;
}
}
```
4. 根据平均工资从小到大排序记录:
```
void sort(struct Teacher *a, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (a[j].avgSalary > a[j + 1].avgSalary) {
struct Teacher temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
```
阅读全文