学生结构体:用结构体来描述学生(学号、姓名、语文成绩、数学成绩、英语成绩、总分、平均分),现在要对30个学生的信息进行处理,录入30名学生的基本信息并计算总分和平均分,按照总分由高到低排序打印信息(格式:学号-姓名-总分-平均分)。
#include <stdio.h>
#define N 30
typedef struct {
int num;
char name[20];
float chinese;
float math;
float english;
float sum;
float avg;
} Student;
void main() {
Student s[N], t;
int i, j;
/* 信息录入 */
for (i = 0; i < N; i++) {
scanf("%d%s%f%f%f", &s[i].num, &s[i].name, &s[i].chinese, &s[i].math, &s[i].english);
s[i].sum = s[i].chinese + s[i].math + s[i].english;
s[i].avg = s[i].sum / 3;
}
/* 总分排序 */
for (i = 0; i < N - 1; i++)
for (j = 0; j < N - 1 - i; j++)
if (s[j].sum < s[j + 1].sum) {
t = s[j];
s[j] = s[j + 1];
s[j + 1] = t;
}
/* 打印信息 */
for (i = 0; i < N; i++) {
printf("%d-%s-%.2f-%.2f\n", s[i].num, s[i].name, s[i].sum, s[i].avg);
}
}