#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 5
//创建学生结构体,并重命名
typedef struct Students{
int id;
char name[20];
float score;
}Stu[N];
//输入学生信息
void Stu_input(Stu arr);
//输出学生信息
void Stu_output(Stu arr);
//求总分和平均分
void Stu_MAX_AVG(Stu arr);
//排名
void Stu_sord(Stu arr);
int main(int argc, const char *argv[])
{
//定义数组arr,初始化
Stu arr={0};
//输入学生信息
Stu_input(arr);
printf("\n");
//输出学生信息
Stu_output(arr);
printf("\n");
//求总分和平均分
Stu_MAX_AVG(arr);
printf("\n");
//排名
Stu_sord(arr);
//输出排名后的数组
Stu_output(arr);
return 0;
}
//输入学生信息
void Stu_input(Stu arr){
for(int i=0; i<N; i++){
printf("请输入第%d个学生信息:", i+1);
scanf("%d%s%f", &arr[i].id, arr[i].name, &arr[i].score);
}
}
//输出学生信息
void Stu_output(Stu arr){
for(int i=0; i<N; i++){
printf("学号%d 姓名%5s 分数%.2f\n", arr[i].id, arr[i].name, arr[i].score);
}
}
//求总分和平均分
void Stu_MAX_AVG(Stu arr){
float sum = 0;
for(int i=0; i<N; i++){
sum += arr[i].score;
}
printf("总分是:%.2f 平均分是:%.2f\n", sum, sum/N);
}
//排名
void Stu_sord(Stu arr){
for(int i=1; i<N; i++){
for(int j=0; j<N-i; j++){
if( arr[j].score < arr[j+1].score ){
Stu s = {0};
s[j] = arr[j];
arr[j] = arr[j+1];
arr[j+1] = s[j];
}
}
}
}
结果如下: