设参赛人数为10位,5位少年组,5位青年组,评委5位。

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;
			
		}
	}
	
	
}