假設學生的基本信息包括學號、姓名、三門課程成績以及個人平均成績,定義一個能夠表示學生信息的結構類型。輸入n(n<50)個學生的成績信息,按照學生的個人平均分從高到低輸出他們的信息。如果平均分相同,按輸入的先后順序排列。
輸入格式:
輸入一個正整數n(n<50),下面n行輸入n個學生的信息,包括:學號、姓名、三門課程成績(整數)。
輸出格式:
輸出從高到低排序后的學生信息,包括:學號、姓名、平均分(保留兩位小數)。
輸入樣例:
3
101 Zhang 78 87 85
102 Wang 91 88 90
103 Li 75 90 84
輸出樣例:
102,Wang,89.67
101,Zhang,83.33
103,Li,83.00
emmm.這么簡單今天10幾分鍾就寫完,期末考的時候我好像看都沒看一眼~~,還是太年輕了(●'◡'●)
#include <stdio.h>
struct student
{
int number ;
char name[10] ;
int math ;
int english ;
int chinse ;
double average ;
} ;
int main()
{
int num ;
int i,j ;
struct student temp;
struct student st_arr[10];
scanf("%d",&num);
for(i=0;i<num;i++)
{
scanf("%d %s %d %d %d",&st_arr[i].number,&st_arr[i].name,&st_arr[i].math,&st_arr[i].english,&st_arr[i].chinse);
st_arr[i].average=(st_arr[i].math+st_arr[i].english+st_arr[i].chinse)*1.0/3 ;
}
for(i=0;i<num-1;i++)
{
for(j=0;j<num-1-i;j++)
{
if(st_arr[j].average<st_arr[j+1].average)
{
temp=st_arr[j];
st_arr[j]=st_arr[j+1];
st_arr[j+1]=temp;
}
}
}
for(i=0;i<num;i++)
{
printf("%d %s %.2lf\n",st_arr[i].number,st_arr[i].name,st_arr[i].average);
}
}