若成绩相同,则按英语成绩排序。要求:①利用结构体数组存放数据。②通过函数调用方式。
1 回答
已采纳
望远
TA贡献1017条经验 获得超1032个赞
#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); }
- 1 回答
- 1 关注
- 2124 浏览
添加回答
举报
0/150
提交
取消