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

猜你喜欢

转载自blog.csdn.net/qq_39350434/article/details/81175020