有8個學生,每個學生選修3門課程。計算每個學生的平均分,總分,每門課程總分,並根據總分排名,輸出排名前三的學生姓名。
#include <stdio.h>
#include <stdlib.h>
typedef struct coursescore{
int chinesescore;
int mathscore;
int englishscore;
char studentname[10];
}coursescore,coursescorerecords[8];
int main()
{
coursescorerecords records={{86,66,70,"蘇雲航"},{100,66,100,"張喬喬"},{66,66,100,"八哥"},
{100,100,100,"帥哲"},{50,66,100,"老劉"},{10,66,100,"老張"},{89,66,0,"小黑"},{55,66,88,"小白"}};
int sum[3]={0,0,0},sumst[8];
double average[8];
int i,j;
printf("每門學生的平均分,總分,每門課程的總分:\n");
for(i=0;i<8;i++)
{
average[i]=(double)(records[i].chinesescore+records[i].englishscore+records[i].mathscore)/3.0;
sumst[i]=records[i].chinesescore+records[i].englishscore+records[i].mathscore;
sum[0]+=records[i].chinesescore;
sum[1]+=records[i].mathscore;
sum[2]+=records[i].englishscore;
printf("%.0lf %d\n",average[i],sumst[i]);
}
printf("\n");
for(i=0;i<3;i++) printf("%d ",sum[i]);
printf("\n");
printf("前三名學生的姓名:\n");
//氣泡排序
for(i=0;i<8;i++)
for(j=1;j<8-i;j++)
{
int total_1=records[j].chinesescore+records[j].mathscore+records[j].englishscore;
int total_2=records[j-1].chinesescore+records[j-1].mathscore+records[j-1].englishscore;
coursescore temp;
if(total_1>total_2)
{
temp=records[j];
records[j]=records[j-1];
records[j-1]=temp;
}
}
for(i=0;i<3;i++) printf("%s ",records[i].studentname);
return 0;
}