#include
typedef struct Student
{
char sno[10];
char name[10];
int grade;
}Student;
//n是学生个数
void findMaxAndMin(Student s[], int n)
{
Student min, max;
int i;
min = max = s[0];
for (i = 0;i < n;i++) {
if (s[i].grade < min.grade)
min = s[i];
if (s[i].grade > max.grade)
max = s[i];
}
printf("成绩最高的学生:\n学号:%s\n姓名:%s\n成绩:%d\n\n", max.sno, max.name, max.grade);
printf("成绩最低的学生:\n学号:%s\n姓名:%s\n成绩:%d\n", min.sno, min.name, min.grade);
}
float avgGrade(Student s[], int n)
{
int sum = 0, i;
for (i = 0;i < n;i++) {
sum += s[i].grade;
}
return (float)(sum / n);
}
void sortStudent(Student s[], int n)
{
int i, j;
for (int i = 0; i < n; i++) {
Student max = s[i];
Student temp;
int index = i;
for (int j = i + 1;j < n;j++) {
if (s[j].grade > max.grade) {
max = s[j];
index = j;
}
}
temp = s[i];
s[i] = max;
s[index] = temp;
}
}
void printStudent(Student s[], int n)
{
int i;
printf("\n\n学号\t姓名\t成绩\n");
for (i = 0;i < n;i++) {
printf("%s\t%s\t%d\n", s[i].sno, s[i].name, s[i].grade);
}
}
void main()
{
Student s[5];
int i, n = 5;
for (i = 0;i < 5;i++) {
printf("请输入第%d个学生学号:", i + 1);
scanf("%s", s[i].sno);
printf("姓名:");
scanf("%s", s[i].name);
printf("成绩:");
scanf("%d", &s[i].grade);
}
findMaxAndMin(s, n);
printf("\n\n平均成绩:%.1f\n", avgGrade(s, n));
sortStudent(s, n);
printStudent(s, n);
getchar();
getchar();
}