中易网

C语言评委评分

答案:3  悬赏:20  
解决时间 2021-03-12 13:46
n 评分程序:N位评委给M个歌手打分(自己输入),去掉一个最高分,去掉一个最低分,该歌手的最后得分是剩下N-2个分数的平均分。最后对所有歌手的成绩从高分到低分排序输出。
最佳答案
#include "stdio.h"#define M 10 //裁判人数
#define N 3 //歌手人数struct sing
{
int final;
int flag;
}singer[N];
void main()
{
int i,j,flag=0;
int max=0,min=0,sum=0;
int score[M][N];
sing ss;
for (i=0;i<N;i++)
{
printf("请给第%d个选手打分\n",i+1);
int a = 0;
for (j=0;j<M;j++)
{
scanf("%d",&a);
score[i][j] = a;

}
max = min = score[i][1];
for (j=0;j<M;j++)
{
sum = sum + score[i][j];
if (score[i][j]>max)
{
max = score[i][j];
}
if (score[i][j]<min)
{
min = score[i][j];
}
}
singer[i].final = (sum - min - max) / (M-2);
singer[i].flag = i+1;
printf("去掉一个最高分,去掉一个最低分,第%d个选手的得分是%d分\n",i+1,singer[i].final);
sum = 0;
}
printf("选手最终成绩排名:\n");
for (i=0;i<N-1;i++)
{
if (singer[i].final<singer[i+1].final)
{
ss = singer[i];
singer[i] = singer[i+1];
singer[i+1] = ss;
}
}
for (i=0;i<N;i++)
{
printf("第%d名: %d号选手,成绩为:%d\n",i+1,singer[i].flag,singer[i].final);
}
}
全部回答
#include "stdio.h"const int LEN=30,M=100,N=100; typedef struct { int num;//抽签号码 char name[LEN];//姓名 float score;//得分 } player; player players[M];//歌手信息int a[M][N];//评委打分信息int m,n;//歌手和评委数量//输入歌手信息和评委打分信息void input(void){ int i,j;printf("歌手数量:"); scanf("%d",&m); printf("评委数量:"); scanf("%d",&n); for(i=0;i<m;i++) { players[i].num=i+1; printf("第%d个歌手的姓名:",i+1); scanf("%d",&players[i].name); printf("第%d个歌手的评委打分:",i+1); for(j=0;j<n;j++) { scanf("%d",&a[i][j]); } }}//求平均值(去掉一个最高分,去掉一个最低高分,求出其余n-2个分数的平均值 void calculate(void){ float max,min; int i,j; for(i=0;i<m;i++) { max=min=players[i].score=a[i][0]; for(j=1;j<n;j++) { players[i].score+=a[i][j]; if(max<a[i][j]) { max=a[i][j]; } if(min>a[i][j]) { min=a[i][j]; } } if(n>2) { players[i].score=(players[i].score-max-min)/(n-2); } else if(n>0) { players[i].score/=n; } } }//对各个选手的得分,用冒泡法排序 //如果用快速排序或堆排序,把这段改写一下就行了void sort(void){ int i,j; for(i=0;i<m-1;i++) { for(j=m-1;j>i;j--) { if(players[j].score>players[j-1].score) { player tmp; tmp=players[j]; players[j]=players[j-1]; players[j-1]=tmp; } } } }//显示所有原始数据void show_origin(void){ int i,j; printf("\n"); for(i=0;i<m;i++) { printf("抽签号码:%d ",players[i].num);; printf("姓名:%d ",players[i].name); printf("评委打分:"); for(j=0;j<n;j++) { printf("%d ",a[i][j]); } printf("\n"); } }//显示所有歌手的信息 void show_player(void){ int i; printf("\n"); for(i=0;i<m;i++) { printf("抽签号码:%d ",players[i].num); printf("姓名:%d ",players[i].name); printf("得分:%f\n",players[i].score); } }//显示获奖歌手的信息 int main() { input(); show_origin(); calculate(); show_player(); sort(); return 0; }

#include <stdlib.h> #include <stdio.h> #include <math.h> #define max_length 6

struct student {  char name[10];  unsigned int ordernum;  double scores[5]; };

void printinfo(student students[]) {  for (unsigned int i=0;i<max_length;++i)  {   printf("学生姓名:%s\n",students[i].name);   printf("学生出场顺序:%d\n",students[i].ordernum);   printf("学生得分:");   for(unsigned int j=0;j<5;++j)   {    printf("%lf  ",students[i].scores[j]);   }   printf("\n");   printf("\n");  } }

void inputstudent(student *stu) {  printf("请输入学生姓名:");  scanf("%s",&stu->name);  printf("请输入学生出场次序:");  scanf("%d",&stu->ordernum);  printf("请输入5个评委分数,用空格隔开:");

 for (unsigned int i=0;i<5;++i)  {   scanf("%lf",&stu->scores[i]);  } } void main() {  student students[max_length];  for(unsigned int i=0;i<max_length;++i)  {   printf("\n第%d个学生情况:\n",i+1);   inputstudent(students[i]);  }

 printf("\n\n学生总体情况:\n");  printinfo(students);  system("pause"); }

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
整理库存发现去年库存商品结转成本时多结了,
354分 理科生 一:机电一体化 二:电气自动化
压力管道的磁化方案
自动编程套料软件SigmaNEST好不好用?有用过
大学了,五一想提前回家,但老师不太通情达理
08年吉利美人豹多少钱
QQ飞车生日这天为什么没送点卷?
云客来麻辣时尚主题餐厅在哪里啊,我有事要去
新源YQ8-24型吊车多少钱
真心求MMD Masked bitcH 动作数据
哪个银行存折利息高
粤鼎烧腊快餐店我想知道这个在什么地方
请问这首歌的罗马音?
宇智波斑把宇智波鼬的眼睛给佐助了吗?之后佐
请问软考可以跨省报名参加考试吗?
推荐资讯
如果入学面试被问到why do you choose our sc
为什么有的警衔底色为灰色,有的为黑色?
新水浒Q传浪子技能问题
1405—1433有一个航海家来到了中国,最远到了
solo travel什么意思
写去‘乌龙峡的作文150字
航海王启航钻石怎么获得 免费获得钻石方法
福瑞棋大红门服装卖场地址在什么地方,想过去
怎样锻炼身体省时间,且有效?
我家是压油坊,别人用过油之后都说起沫子,我有
什么农场最好玩?
雪如美容美体养生馆这个地址在什么地方,我要
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?