分享

二维数组的运用实例

 _知识库 2020-03-09

/*--------------------------------------------------

--------------------------------------------------*/

#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");

}

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多