/*-------------------------------------------------- --------------------------------------------------*/ #include<stdio.h> #include<string.h> #define N 8 /*运动员人数*/ #define M 5 /*评委人数*/ void main() { int num[N],i,j,t; /*定义编号组数,循环控制变量,中间变量*/ char name[N][10],str[10]; /*定义姓名数组,每个运动员姓名不超过10个字符*/ float score[N][M],max,min,sum[N]={0},ave[N],k; /*定义成绩数组,用于存放评委对每位选手的打分,定义最高分,最低分,总分,平均分,中间变量*/ printf("\n"); for(i=0;i<N;i++) { printf("共有8名选手。请输入第%d位选手编号和姓名:",i+1); scanf("%d%s",&num[i],&name[i]); printf("请5位评委为该运动员打分:"); for(j=0;j<M;j++) { scanf("%f",&score[i][j]); sum[i]+=score[i][j]; /*计算每位运动员的总分*/ } } printf("\n***********选手得分情况**********\n"); printf("编号\t姓名\t评委给出的分数\n"); for(i=0;i<N;i++) { printf("%d\t%s\t",num[i],name[i]); for(j=0;j<M;j++) printf("%5.lf",score[i][j]); printf("\n\n"); } for(i=0;i<N;i++) /*计算平均分,去掉最高分和最低分得出选手的平均分*/ { max=min=score[i][0]; for(j=1;j<M;j++) { if(max<score[i][j]) max=score[i][j]; if(min>score[i][j]) min=score[i][j]; } printf("%d号选手去掉最高分%.lf\t和最低分%.lf\t",num[i],max,min); sum[i]=sum[i]-min-max; ave[i]=sum[i]/(M-2); printf("最后得分%.lf \n",ave[i]); } for(i=0;i<N-1;i++) /*采用比较顺序法对运动员的平均成绩进行升序排序*/ for(j=i+1;j<N;j++) if(ave[i]<ave[j]) { /*交换成绩、编号、姓名*/ k=ave[i];ave[i]=ave[j];ave[j]=k; t=num[i];num[i]=num[j];num[j]=t; strcpy(str,name[i]);strcpy(name[i],name[j]);strcpy(name[j],str); } printf("\n*************比赛结果************\n"); printf("名次\t编号\t姓名\t最后成绩\n"); for(i=0;i<N;i++) /*排序后输出*/ printf("第%d名\t%d\t%s\t%.lf\n",i+1,num[i],name[i],ave[i]); printf("\n\n"); } |
|
来自: _知识库 > 《基础C语言基本功能实现》