#include<stdio.h>
struct student{
int num;
char name[20];
float score;
};
int main()
{
struct student stu[5]={1001,"huang",96.5,1002,"wang",93.27,1003,"li",94.23,1004,"xie",98.33,1005,"liu",86.2
};//定义结构体数组并初始化
struct student temp;//定义一个结构体变量,用于交换时的临时变量
int n=5;
int i,j,m;
for(i=0;i<n-1;i++)
{
m=i;
for(j=i+1;j<n;j++)
if(stu[j].score>stu[m].score)
m=j;
temp=stu[i];
stu[i]=stu[m];
stu[m]=temp;
}
for(i=0;i<5;i++)
printf("%d\t%s\t%f\n",stu[i].num,stu[i].name,stu[i].score);
return 0;
}
若需要输出成绩最高的学生信息,用以下代码
#include<stdio.h>
struct student{
int num;
char name[20];
float score;
};
int main()
{
struct student stu[5]={
1001,"huang",96.5,
1002,"wang",93.27,
1003,"li",94.23,
1004,"xie",98.33,
1005,"liu",86.2
};
int m=0,n=5,i;
for(i=1;i<n;i++)
{
if(stu[m].score<stu[i].score)
m=i;
}
printf("%d\t%s\t%f\n",stu[m].num,stu[m].name,stu[m].score);
}
改成有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。
#include<stdio.h>
#define N 2
struct student{
int num;
char sex;
char name[20];
float score[4];
float average;
};
int main()
{
struct student stu[N];
int m=0,i,j;
float sum;
for(i=0;i<N;i++)
{
printf("请输入第%d位学生的信息(学号 性别 姓名)",i+1);
scanf("%d,%c,%s",&stu[i].num,&stu[i].sex,stu[i].name);
for(j=0;j<4;j++)
scanf("%f",&stu[i].score[j]);
}
for(i=0;i<N;i++)
{
sum=0.0;
for(j=0;j<4;j++)
sum+=stu[i].score[j];
stu[i].average=sum/4.0;
}
for(i=1;i<N;i++)
{
if(stu[m].average<stu[i].average)
m=i;
}
printf("平均分最高的学生信息为:\n");
printf("%d\t%c\t%s\t%f",stu[m].num,stu[m].sex,stu[m].name,stu[m].average);
return 0;
}