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