题目
参加运动会,有n个学校,学校编号为1, 2, …, n,比赛分为m个男子项目和w个女子项目,项目编号为男子1, 2, …, n,女子m + 1, m + 2, ,…, m + w.不同的项目,取前五名或前三名积分与前五名的积分分为7,5, 3, 2, 1,前三名的积分分别5, 3, 2;
#include<iostream>
#include<string>
#include<iomanip>
#include<fstream>
#include<conio.h>
using namespace std;
int n; //n 个学校
int m; //m 个男子项目
int w; //w 个女子项目
struct pro //表示项目的结构体
{
string name; //项目名称
int snum[6];//前 5 名学校的编号
}p[21];
struct school //表示学校的结构体
{
int num;
string name; //学校名称
int score; //学校总分
int male; //男子总分
int female; //女子总分
int info;
}sch[21];
int integral1[5]={7,5,3,2,1};//前五名得分
// 输入学校数目
void inputInfo()
{
int i,j,y,x;
printf("输入学校数目:");
y=0;
while(1) {
scanf("%d",&n);
if(n>=1&&n<=20)
y=1;
if(y)
break;
else
printf("输入数据有误, 请重新输入:");
}
for(i=1;i<=n;i++) {
printf("输入第 %d 个学校的名称:", i);
cin>>sch[i].name;
sch[i].score=0;
sch[i].female=0;
sch[i].male=0;
sch[i].info=0;
sch[i].num=i;
}
printf("输入男子项目数和女子项目数:");
y=0;
while(1){
scanf("%d%d",&m,&w);
if(m <= 20 && m >= 1 && w <= 20 && w >= 1)
y=1;
if(y)
break;
else
printf("输入数据有误, 请重新输入:");
}
for(i=1;i<=m+w;i++){
printf("输入第 %d 个项目的名称:\n",i);
cin>>p[i].name;
printf("输入第 %d 个项目的前 5 名的学校编号:\n",i);
for(j=1;j<=5;j++){
y=0;
while(1){
scanf("%d",&x);
if(x>=1&&x<=20)
y=1;
if(y)
break;
else
printf("输入数据有误, 请重新输入:");
}
p[i].snum[j]=x;
sch[x].score+=integral1[j-1];
if(i<=m)
sch[x].male+=integral1[j-1];
else sch[x].female+=integral1[j-1];
}
}
}
// 按任意键返回主菜单
void order() {
cout<<"请按任意键返回主菜单"<<endl;
getch();
}
//输出函数
void print(int i)
{
cout<<sch[i].num<<setw(10)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9)
<<sch[i].male<<setw(10)<<sch[i].female<<endl;
}
//按编号排序
void Numbering()
{
int i;
printf("\n 按编号排列:\n");
printf("编号 学校名称 总分 男子总分 女子总分\n");
for(i=1;i<=n;i++)
print(i);
order();
}
//按学校总分排序
void totalScore()
{
int i,j,k,a;
printf("\n 按学校总分排列:\n");
printf("编号 学校名称 总分 男子总分 女子总分\n");
for(i=1;i<=n;i++){
sch[i].info =0;
}
for(k=1;k<=n;k++){
for(i=1;i<=n;i++){
if(sch[i].info ==0)
break;
}
{
a=i;
for(j=1;j<=n;j++){
if(sch[j].info ==0) {
if(sch[i].score<sch[j].score){
a=j;
}
}
}
}
print(a);
sch[a].info=1;
};
order();
}
//按学校男总分排序
void malezf()
{
int k,i,j,a;
printf("\n 按学校男子总分排列:\n");
printf("编号 学校名称 总分 男子总分 女子总分\n");
for(i=1;i<=n;i++){
sch[i].info =0;
}
for(k=1;k<=n;k++){
for(i=1;i<=n;i++){
if(sch[i].info ==0)
break;
}
{
a=i;
for(j=1;j<=n;j++){
if(sch[j].info ==0){
if(sch[i].male<sch[j].male){
a=j;
}
}
}
}
print(a);
sch[a].info=1;cout<<"";
}
order();
}
//按学校女总分排序
void femalezf(){
int i,j,a,k;
printf("\n 按学校女子总分排列:\n");
printf("编号 学校名称 总分 男子总分 女子总分\n");
for(i=1;i<=n;i++){
sch[i].info =0;
}
for(k=1;k<=n;k++){
for(i=1;i<=n;i++){
if(sch[i].info ==0) break;
}
{
a=i;
for(j=1;j<=n;j++){
if(sch[j].info ==0){
if(sch[i].female<sch[j].female){
a=j;
}
}
}
}
print(a);
sch[a].info=1;
}
cout<<endl;
order();
}
//查询学校信息
void schScore()
{
int i,y,s;
printf("输入需要查询的学校编号:");
y=0;
while(1) {
scanf("%d",&s);
if(s>=1&&s<=n)
y=1;
if(y)
break;
else
printf("输入数据有误, 请重新输入:");
}
printf("该学校相关信息:\n");
printf("编号 学校名称 总分 男子总分 女子总分\n");
for(i=1;i<=n;i++){
if(sch[i].num==s){
print(i);
break;
}
}
cout<<endl;
order();
}
//查询项目信息
void project()
{
int i,y,s;
printf("输入需要查询的项目编号:");
y=0;
while(1){
scanf("%d",&s);
if(s>=1&&s<=n)y=1;
if(y)
break;
else
printf("输入数据有误, 重新输入:");
}
cout<<p[s].name<<"前 5 名学校编号及名称为:"<<endl;
printf("名次 编号 学校名称\n");
for(i=1;i<=5;i++)
cout<<" "<<i<<" "<<p[s].snum[i]<<setw(12)<<sch[ p[s].snum[i] ].name<<endl;
cout<<endl;
order();
}
//菜单函数
void menu()
{
int num;
while(1){
printf("\n运动会计分系统\n");
printf("1.学校编号排序输出结果\n");
printf("2.学校总分排序输出结果\n");
printf("3.学校男子总分排序输出结果\n");
printf("4.学校女子总分排序输出结果\n");
printf("5.查询某个学校成绩\n");
printf("6.查询某个项目成绩\n");
printf("7.结束\n\n");
printf("\n 选择需要的操作(选择序号):\n");
scanf("%d",&num);
if(num==1)
Numbering();
if(num==2)
totalScore();
if(num==3)
malezf();
if(num==4)
femalezf();
if(num==5)
schScore();
if(num==6)
project();
if(num==7)
break;
}
}
//主函数
int main()
{
inputInfo();
menu();
return 0;
}
文档在这里,需要的小伙伴可以拿去参考一下
(里面有两个选题,因为我们老师当初就是让我们做两个选题的)
😛😛😛😛😛
链接:https://pan.baidu.com/s/1m83uA6DoLkxoF_H9947uJA
提取码:hb18