(C語言)學生成績排序-期末考倒數第二題結構體數組排序


假設學生的基本信息包括學號、姓名、三門課程成績以及個人平均成績,定義一個能夠表示學生信息的結構類型。輸入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);
}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM