文本内容:
第章项目式案例10【例
10.1】假设某歌手大奖赛有M名选手、N名裁判,选手的得分规则是去掉一个最高分、一个最低分,然后计算平均分编程序在主函数中输入选手的姓名及裁判的打分,然后在第一个被调函数中求出每个选手的平均分,在第二个被调函数中按选手的平均分降序排序,最后在主函数中输出结果编程思路1定义三个相互关联的数组,分别存储选手的姓名、各裁判的打分和平均分2在第一个被调函数中求出每个选手的总分、最高分、最低分,进而求出平均分3在第二个被调函数中按选手的平均分降序排序源程序/*选手人数*//*裁判人数*/♦include stdio.h#include string.h♦define M5#define N6voida[]averfloat x[][N]float fint m;void sortchar w[]
[9],float a[],int m;int mainvoidA{float g[M][N],avg[N];char name[M]
[9];int i,j;fori=0;iM;i++”请依次输入第知个选手的姓名及招项得分:,{printf d\n”i+l,N;scanfH%sn,name[i];forj=0;jN;j++是第个选手的第个得分*/scanf n%f\g[i][j];[j]i javerg,avg M;z”排序之前的结果printf:\nn;fori=0;iM;i++”选手%的平均分printf s%.2f\nn,name[i],avg[i];sortname,avg,M;”排序之后的结果printf\n;fori=0;iM;i++”选手%$的平均分printf%.2f\nn,name[i]avg[i];return0;z/*计算每个选手的平均分*/void averfloat x[][N],float a[]int mz{int ij;z存储最高分,存储最低分*/float max,min;/*max minfori=0;im;i++先用于存放第个选手的总分*/{a[i]=x[i]
[0];imax=min=x[i]
[0];for j=l;jN;j++/*累加第个选手所有得分*/a[i]=a[i]+x[i][j];iif x[i][j]maxmax=x[i][j];只有不大于时,才有可能小于else ifx[i][j]min/*x[i][j]max min*min=x[i][j];/*减去一个最高分、一个最低分*/a[i]=a[i]-max-min;是第个选手的平均分*/a[i]=a[i]/N-2;i return;/*按选手的平均分降序排序*/void sortcharw[]
[9]float a[],intmzint i,j;char s
[9];float t;for i=0;i=m-2;i++forj=i+l;j=m-l;j++if a[i]a[j]t=a[i];a[i]=a[j];a[j]=t;strcpys w[i];zstrcpyw[i],w[j];strcpyw[j],s;return;。
个人认证
优秀文档
获得点赞 0