望远
#include<stdio.h>
typedef struct
{
float scores[3];
float sum;
int num;
}Student;
void inputMessaage(Student students[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
printf("请输入%d位学生的3课成绩(空格分隔):\n",i+1);
students[i].num=10000+i;
for(j=0;j<3;j++)
{
scanf("%f",&students[i].scores[j]);
}
}
}
void sum(Student students[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
students[i].sum=0;
for(j=0;j<3;j++)
{
students[i].sum+=students[i].scores[j];
}
}
}
void order(Student studnets[],int n)
{
int i,j;
Student temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(studnets[i].sum<studnets[j].sum)
{
temp=studnets[i];
studnets[i]=studnets[j];
studnets[j]=temp;
}
if(studnets[i].sum==studnets[j].sum)
{
if(studnets[i].scores[2]<studnets[j].scores[2])
{
temp=studnets[i];
studnets[i]=studnets[j];
studnets[j]=temp;
}
}
}
}
}
void display(Student studnets[],int n)
{
int i,j;
printf("学生编号\t语文\t数学\t英语\t总分\n");
for(i=0;i<n;i++)
{
printf(" %d \t",studnets[i].num);
for(j=0;j<3;j++)
{
printf("%.1f\t",studnets[i].scores[j]);
}
printf("%.1f\n",studnets[i].sum);
}
}
void main()
{
Student studnets[10];
int num=10;
inputMessaage(studnets,num);
sum(studnets,num);
order(studnets,num);
display(studnets,num);
}