运动会

在这里插入图片描述


#include <string.h>
#include <stdio.h>

//存储项目成绩或院系总成绩的数据结构
struct CHENGJI{
	int index;//院系的序号
	char name[50];//院系名称
	double score;//分数
};

//存储每个院系总成绩的数组
struct CHENGJI school[100];
int len_school=0;//院系数


char nanzi[100][100];//男项目名称列表
struct CHENGJI chengji_nanzi[100][100];//男子每个项目,每个院系的成绩
int len_nanzi=0;//男项目数

char nvzi[100][100];//女项目名称列表
struct CHENGJI chengji_nvzi[100][100];//女子每个项目,每个院系的成绩
int len_nvzi=0;//女项目数



void input(){
	int i,j;
	printf("请输入院系总数:");
	scanf("%d",&len_school);

	printf("请输入男子竞赛项目数:");
	scanf("%d",&len_nanzi);

	printf("请输入女子竞赛项目数:");
	scanf("%d",&len_nvzi);

	//输入每个院系名称
	for(i=0;i<len_school;i++){
		struct CHENGJI cj;
		printf("请输入第 %d 个院系的名称:",i+1);
		scanf("%s",cj.name);
		cj.index = i;
		cj.score = 0;
		school[i] = cj;
	}

	//输入男子每个项目的名称 
	for(i=0;i<len_nanzi;i++){
		printf("请输入第 %d 个男子竞赛项目的名称:",i+1);
		scanf("%s",nanzi[i]);
	}

	//输入女子每个项目的名称
	for(i=0;i<len_nvzi;i++){
		printf("请输入第 %d 个女子竞赛项目的名称:",i+1);
		scanf("%s",nvzi[i]);
	}

	//输入男子每个项目,每个院系的成绩
	for(i=0;i<len_nanzi;i++){
		for(j=0;j<len_school;j++){
			struct CHENGJI cj;
			strcpy(cj.name,school[j].name);
			cj.index = j;
			printf("请输入院系 %s, 男子项目 %s 的成绩:",school[j].name,nanzi[i]);
			scanf("%lf",&cj.score);
			chengji_nanzi[i][j] = cj;
		}
	}
	
	//输入女子每个项目,每个院系的成绩
	for(i=0;i<len_nvzi;i++){
		for(j=0;j<len_school;j++){
			struct CHENGJI cj;
			strcpy(cj.name,school[j].name);
			cj.index = j;
			printf("请输入院系 %s, 女子项目 %s 的成绩:",school[j].name,nvzi[i]);
			scanf("%lf",&cj.score);
			chengji_nvzi[i][j] = cj;
		}
	}
}

//排序
void sort(){
	int k,i;
	
	//男子每个项目的成绩排序
	for(k=0;k<len_nanzi;k++){		
		for(i=0;i<len_school;i++){
			double max = -1;
			int maxIndex = 0;
			int j=0;
			struct CHENGJI temp;
			for(j=i;j<len_school;j++){
				if(chengji_nanzi[k][j].score>max){
					max = chengji_nanzi[k][j].score;
					maxIndex = j;
				}
			}
			temp = chengji_nanzi[k][maxIndex];
			chengji_nanzi[k][maxIndex] = chengji_nanzi[k][i];
			chengji_nanzi[k][i] = temp;
		}
	}

	//女子每个项目的成绩排序
	for(k=0;k<len_nvzi;k++){		
		for(i=0;i<len_school;i++){
			double max = -1;
			int maxIndex = 0;
			int j=0;
			struct CHENGJI temp;
			for(j=i;j<len_school;j++){
				if(chengji_nvzi[k][j].score>max){
					max = chengji_nvzi[k][j].score;
					maxIndex = j;
				}
			}
			temp = chengji_nvzi[k][maxIndex];
			chengji_nvzi[k][maxIndex] = chengji_nvzi[k][i];
			chengji_nvzi[k][i] = temp;
		}
	}
}

//先排序,然后计算出每个院系的综合成绩
void compute(){
	int i,j;
	
	sort();
	
	//首先每个院系的成绩设为0
	for(j=0;j<len_school;j++){
		school[j].score = 0;
	}

	//男子项目计算
	for(i=0;i<len_nanzi;i++){
		for(j=0;j<len_school;j++){
			if(j==0){//第一名,该院系计7分
				int index = chengji_nanzi[i][j].index;
				school[index].score += 7;
			}
			if(j==1){
				int index = chengji_nanzi[i][j].index;
				school[index].score += 5;
			}
			if(j==2){
				int index = chengji_nanzi[i][j].index;
				school[index].score += 3;
			}
			if(j==3){
				int index = chengji_nanzi[i][j].index;
				school[index].score += 2;
			}
			if(j==4){
				int index = chengji_nanzi[i][j].index;
				school[index].score += 1;
			}
		}
	}

	//男子项目计算
	for(i=0;i<len_nvzi;i++){
		for(j=0;j<len_school;j++){
			if(j==0){
				int index = chengji_nvzi[i][j].index;
				school[index].score += 7;
			}
			if(j==1){
				int index = chengji_nvzi[i][j].index;
				school[index].score += 5;
			}
			if(j==2){
				int index = chengji_nanzi[i][j].index;
				school[index].score += 3;
			}
			if(j==3){
				int index = chengji_nanzi[i][j].index;
				school[index].score += 2;
			}
			if(j==4){
				int index = chengji_nanzi[i][j].index;
				school[index].score += 1;
			}
		}
	}
}

int main(){
	int ch;
	int i,j;
	system("color F0");
	input();

	while(1){
		printf("\n");
		printf("1-查看参赛院系信息\n");
		printf("2-查看比赛项目信息\n");
		printf("3-查看院系比赛成绩\n");
		scanf("%d",&ch);

		switch(ch){
		case 1:
			for(i=0;i<len_school;i++){
				printf("%s\n",school[i].name);
			}
			break;
		case 2:
			sort();
			printf("男子比赛项目:\n");
			for(i=0;i<len_nanzi;i++){
				printf("%s:\n",nanzi[i]);
				for(j=0;j<len_school;j++){
					printf("%s\t%.2lf\n",chengji_nanzi[i][j].name,chengji_nanzi[i][j].score);
				}
			}
			printf("女子比赛项目:\n");
			for(i=0;i<len_nvzi;i++){
				printf("%s:\n",nvzi[i]);
				for(j=0;j<len_school;j++){
					printf("%s\t%.2lf\n",chengji_nvzi[i][j].name,chengji_nvzi[i][j].score);
				}
			}
			break;
		case 3:
			compute();
			for(i=0;i<len_school;i++){
				printf("%s\t%.2lf\n",school[i].name,school[i].score);
			}
			break;
		}
	}

	return 0;
}

猜你喜欢

转载自blog.csdn.net/u011256974/article/details/89206928
今日推荐