有10名学生,每名学生有语文、数学、外语三门课程的成绩,计算每名学生的总成绩,然后按总成绩由高到低排序

若成绩相同,则按英语成绩排序。

要求:①利用结构体数组存放数据。

②通过函数调用方式。

qq_不二_19
浏览 2125回答 1
1回答

望远

#include<stdio.h> typedef struct  { float scores[3]; float sum; int num; }Student; void inputMessaage(Student students[],int n) { int i,j; for(i=0;i<n;i++) { printf("请输入%d位学生的3课成绩(空格分隔):\n",i+1); students[i].num=10000+i; for(j=0;j<3;j++) { scanf("%f",&students[i].scores[j]); } } } void sum(Student students[],int n) { int i,j; for(i=0;i<n;i++) { students[i].sum=0; for(j=0;j<3;j++) { students[i].sum+=students[i].scores[j]; } } } void order(Student studnets[],int n) { int i,j; Student temp; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(studnets[i].sum<studnets[j].sum) { temp=studnets[i]; studnets[i]=studnets[j]; studnets[j]=temp; } if(studnets[i].sum==studnets[j].sum) { if(studnets[i].scores[2]<studnets[j].scores[2]) { temp=studnets[i]; studnets[i]=studnets[j]; studnets[j]=temp; } } } } } void display(Student studnets[],int n) { int i,j; printf("学生编号\t语文\t数学\t英语\t总分\n"); for(i=0;i<n;i++) { printf("  %d  \t",studnets[i].num); for(j=0;j<3;j++) { printf("%.1f\t",studnets[i].scores[j]); } printf("%.1f\n",studnets[i].sum); } } void main() { Student studnets[10]; int num=10; inputMessaage(studnets,num); sum(studnets,num); order(studnets,num); display(studnets,num); }
打开App,查看更多内容
随时随地看视频慕课网APP