1. 程式人生 > >有8個學生,每個學生選修3門課程。計算每個學生的平均分,總分,每門課程總分,並根據總分排名,輸出排名前三的學生姓名。

有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;
}