📄 student1.c
字号:
#include <stdio.h>
#include <stdlib.h>
#define N 10
#define M 6
struct Student
{
char * Id;
char * Name;
double score[M];
double average;
};
double getAverage(double * , int n); //求从一组数中去掉最大和最小数后的平均值
void sort(Student * , int n); //排序函数
void printResult(Student * ); //输出结果
void main()
{
int i;
Student stu[N] = {
{"1","aaa",65,45,67,56,85.5,78.4},
{"2","bbb",69,75,87,56,95.5,58.4},
{"3","ccc",65,45,67,56,95.5,78.4},
{"4","ddd",85,54,87,69.8,75.5,88.4},
{"5","eee",65,85,77,84,95.5,78.4},
{"6","fff",65,69,87,76,85.5,78.4},
{"7","ggg",75,45,77,56,95.5,88.4},
{"8","iii",67,45,87,86,95.5,86.4},
{"9","hhh",75,75,87,56,75.5,68.4},
{"10","jjj",80,85,87,86,90,88}
};
for (i = 0 ; i < N ; i ++)
{
stu[i].average = getAverage(stu[i].score , M);
}
sort(stu , N);
printResult(stu);
}
double getAverage(double * score, int n)
{
int j;
double max = score[0];
double min = score[0];
double total= score[0];
for(j = 1 ; j < n ; j ++)
{
if (max < score[j])
max = score[j];
if (min > score[j])
min = score[j];
total += score[j];
}
return (total - max - min) / (n-2);
}
void sort(Student * stu , int n)
{
int i,j;
Student tmp;
for (i = 0 ; i < n -1 ; i ++)
for(j = i + 1 ; j < n ; j ++)
{
if (stu[i].average < stu[j].average)
{
tmp = stu[i] ;
stu[i] = stu[j] ;
stu[j] = tmp;
}
}
}
void printResult(Student * stu)
{
int i = 0;
printf("The First: \n");
printf ("%2d :%s,\t%s,\t%lf\n" , i,stu[i].Id , stu[i].Name , stu[i].average);
printf("\nThe Second: \n");
for(i = 1 ; i < 3 ; i ++)
{
printf ("%2d :%s,\t%s,\t%lf\n" , i,stu[i].Id , stu[i].Name , stu[i].average);
}
printf("\nThe Third: \n");
for(i = 3 ; i < M ; i ++)
{
printf ("%2d :%s,\t%s,\t%lf\n" , i,stu[i].Id , stu[i].Name , stu[i].average);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -