1.能够录入各位评委给各位选手的比赛得分,并根据年龄进行分组。
2.统计各个参赛选手的最终得分(平均分),保留两位小数。
3.能够输入选手信息查阅选手的得分情况(各位评委的分数及平均分)。
4.比赛结束后,显示“名次表”。
要求:
1.采用结构体
2.有一定的注释
3.用c++语言编写
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
#include <string>
using namespace std;
//定义参赛选手信息
struct CansaiXuanshou
{
char name[20];
int age;
float score[5];
float avg;
};
//冒泡排序
void bubble_sort(CansaiXuanshou arr[], int len) {
int i, j;
CansaiXuanshou temp;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (arr[j].avg < arr[j + 1].avg) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
void main()
{
printf("请录入5位选手信息,10-18岁的分到少年组,19-30岁的分到青年组\n");
CansaiXuanshou sn[5],qn[5]; //定义两个数组,存储少年组和青年组参赛选手信息
int cntSn = 0;
int cntQn = 0;
for (int i = 0; i < 10; i++)
{
CansaiXuanshou st;
memset(st.name,0,20);
printf("请输入第%d位选手的姓名,年龄",i+1);
scanf("%s %d",st.name,&st.age);
printf("请输入5位评委的分数");
float sum = 0.0;
for (int j = 0; j < 5; j++)
{
scanf("%f",&st.score[j]);
sum += st.score[j];
}
st.avg = sum / 5.0; //计算平均分
//按年龄分组
if ( st.age >= 10 && st.age <= 18)
{
sn[cntSn] = st;
cntSn++;
}else if (st.age >= 19 && st.age <= 30)
{
qn[cntQn] = st;
cntQn++;
}
}
while(true)
{
printf("请选择您的操作:\n");
printf("1.查询某参赛选手信息\n");
printf("2.显示排名\n");
printf("3.退出系统\n");
int cmd ;
scanf("%d",&cmd);
char tmp[20] ={0};
int i;
bool b = false;
switch(cmd)
{
case 1:
printf("请输入参数选手姓名:");
scanf("%s",tmp);
//查询少年组
for (i = 0; i< 5; i++)
{
string nm = sn[i].name;
if (nm.compare(tmp) == 0)
{
printf("5位评委评分:%.2f %.2f %.2f %.2f %.2f,平均分=%.2f\n",sn[i].score[0],sn[i].score[1],sn[i].score[2],sn[i].score[3],sn[i].score[4],sn[i].avg);
b = true;
break;
}
}
if (!b)//如果未找到,查询青年组
{
for (i = 0; i< 5; i++)
{
string nm = qn[i].name;
if (nm.compare(tmp) == 0)
{
printf("5位评委评分:%.2f %.2f %.2f %.2f %.2f,平均分=%.2f\n",qn[i].score[0],qn[i].score[1],qn[i].score[2],qn[i].score[3],qn[i].score[4],qn[i].avg);
b = true;
break;
}
}
}
if (!b)
{
printf("未找到该参数人员\n");
}
break;
case 2:
printf("少年组排名:\n");
bubble_sort(sn,5);
for (i = 0; i < 5; i++)
{
printf(" >> %s %.2f\n",sn[i].name,sn[i].avg);
}
printf("\n青年组排名\n");
bubble_sort(qn,5);
for (i = 0; i < 5; i++)
{
printf(" >> %s %.2f\n",qn[i].name,qn[i].avg);
}
break;
case 3:
return ;
default:
break;
}
}
}