c语言期末作业编写程序,原创代码,跪求各位大神帮忙,拜托拜托,谢谢你们。题目是—:有十个选手参加歌

c语言期末作业编写程序,原创代码,跪求各位大神帮忙,拜托拜托,谢谢你们。题目是—:有十个选手参加歌唱比赛,十个裁判对每个选手的演唱进行打分,去掉一个最高分,去掉一个最低分... c语言期末作业编写程序,原创代码,跪求各位大神帮忙,拜托拜托,谢谢你们。题目是—:有十个选手参加歌唱比赛,十个裁判对每个选手的演唱进行打分,去掉一个最高分,去掉一个最低分,剩下分数的平均值最为每位选手的最后成绩
要求:1、采用结构体定义每个选手的参赛编号,姓名以及十个裁判打出的分数;
2、从键盘输入每个选手的相关信息:参赛编号,姓名和十个得分;
3、计算每位选手的最后得分,并按分数由高到低排序;
4、查询功能:输入参赛选手的编号或姓名,便可输出该选手的得分以及排名;
以上功能采用菜单操作方式,即从键盘输入1到3这三个数,分别完成以上2到4的功能。
展开
 我来答
水里风
2015-01-07 · TA获得超过1528个赞
知道小有建树答主
回答量:1294
采纳率:80%
帮助的人:511万
展开全部
#include<stdio.h>
#include<string.h>
#define N 10//定义最多选手个数

typedef struct xuanshou
{
char bianhao[20];//选手编号
char name[20];//选手姓名
float a[10];//评委打分
float grade;//平均分,嫌麻烦可以直接放到数组里去
}Xu;

Xu xuanshou[N];//选手数组
Xu temp;//用来调换

void init()//输入函数
{
int i,j;
float sum,max,min;
char c;
for(i=0;i<N;i++)
{
sum=0;//统计总分最后求得平均分
max=0;min=100;
printf("请输入第%d个选手的姓名:",i+1);
scanf("%s",&xuanshou[i].name);
printf("请输入10位评委的打分:");
for(j=0;j<10;j++)
{
scanf("%f",&xuanshou[i].a[j]);
scanf("%c",&c);
sum+=xuanshou[i].a[j];
if(max<xuanshou[i].a[j])max=xuanshou[i].a[j];
if(min>xuanshou[i].a[j])min=xuanshou[i].a[j];
if(j==9)xuanshou[i].grade=(sum-max-min)/8;
}
}
temp.grade=xuanshou[0].grade;
}

void paixu()//对数组进行从大到小的排序
{
int i,j,k;
for(i=0;i<N;i++)
for(j=i+1;j<10;j++)
if(temp.grade<xuanshou[j].grade)
{
strcpy(temp.name,xuanshou[i].name);
temp.grade=xuanshou[i].grade;
for(k=0;k<10;k++)
temp.a[k]=xuanshou[i].a[k];//temp存储当前排序中要排位置的信息
strcpy(xuanshou[i].name,xuanshou[j].name);
xuanshou[i].grade=xuanshou[j].grade;
for(k=0;k<10;k++)
xuanshou[i].a[k]=xuanshou[j].a[k];//将较大的移到当前要排序的位置
strcpy(xuanshou[j].name,temp.name);
xuanshou[j].grade=temp.grade;
for(k=0;k<10;k++)
xuanshou[j].a[k]=temp.a[k];//将之前排序位置元素移至该处
}
}

void chazhao()
{
char s[20];
int i;
printf("请输入选手编号或姓名:");
scanf("%s",s);
for(i=0;i<N;i++)
if(strcmp(xuanshou[i].bianhao,s)==0||strcmp(xuanshou[i].name,s)==0)
{
printf("选手分数为:%d 排名为:%d",xuanshou[i].grade,i+1);
break;
}
}
void display()//显示输出函数
{
int i;
printf("名次\t编号\t姓名\t分数\n");
for(i=0;i<N;i++)
printf("%d\t%s\t%s\t%f\n",i+1,xuanshou[i].bianhao,xuanshou[i].name,xuanshou[i].grade);
}

int main()
{
int n;
printf(" ===========歌手比赛==========\n");
printf("操作:(退出请直接关闭窗口)\n1.输入信息\n2.排序输出名次\n3.查找选手\n");
while(1)
{
printf("选择:");
scanf("%d",&n);
switch(n)
{
case 1:
{
printf("请输入选手信息\n");
printf("注意:输入评委分数的时候请用空格将各分数隔开输入(例如:10 20 30 40Enter)\n");
init();
paixu();
}break;
case 2:display();
case 3:chazhao();
}
}
}
玉麒麟3947685434
2015-01-07
知道答主
回答量:83
采纳率:0%
帮助的人:16.3万
展开全部
拿不下来
追问
什么意思?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式