数组问题3
输入 5个学生的 姓名,数学分数,英语分数,然后求平均分,然后按平均分高低排下来他的姓名和数学成绩和英语成绩。
回复 楼主 wa5000
个人感觉用2个数组就能够解决问题,呵呵.具体的不是很清楚.
#include "stdio.h" #include "string.h" #include "stdlib.h" #define N 5 struct score { char name[10]; float math,eng; }; void sort(double a[N],struct score s[N]) //排序,用平均值排序,返回结构体变量 { int i,k,m;struct score t1;double t2; for(i=1;i<N;i++) { m=i-1; for(k=i;k<N;k++) if(a[m]>a[k]) m=k; if(m!=i-1) { t1=s[i-1];s[i-1]=s[m];s[m]=t1; t2=a[i-1];a[i-1]=a[m];a[m]=t2; } } } main() //主函数 { struct score s[N]; int i; double avg[N]; for(i=0;i<N;i++) { printf("name:"); fflush(stdin); gets(s[i].name); printf("maths english:"); scanf("%f%f",&s[i].math,&s[i].eng); } for(i=0;i<N;i++) avg[i]=(s[i].math+s[i].eng)/2; sort(avg,s); for(i=0;i<N;i++) printf("%s\t%.1f\t%.1f\n",s[i].name,s[i].math,s[i].eng); }