user-0 提问: 大佬们，救救孩子吧！C语言课程设计，不能用链表和全局变量。很急，就快要验收了。

回复:
user: user-1
content: 其实是个很有用的练手题，如果把比赛等同于比较、比对，就看出其实用价值了。如果做一个足球比赛的仿真组织规划套组程序，那么非常多的应用都可以参照编程了。

user: user-2
content: 楼上给的代码，就是把全部的比赛结果一股脑一起输入了，和题目输入每轮比赛的比分,并可以存储。最后每轮比赛的积分榜要求不符。不过我怀疑你们老师出题也根本没考虑这个循环赛具体是意思，当作数学题的排列组合问题了，以为就是个双层循环，哎。。。。。。

user: user-2
content: 循环赛的轮转表生成还是个比较麻烦的算法，涉及分治算法，从题目看可能也不是老师要考的点，可能需要先手工配置好每轮那个和那个队比赛，这样么又不通用了。

user: user-3
content: 引用 15 楼 是小菜 的回复:[quote=引用 13 楼 寻开心的回复:]增加个辅助结构，记录一下 sturct  Score {     int nTeamA;     int nTeamB;    int nScoreA;    int nScoreB; } scores[45];  输入的时候，输入数据到这里 从这里可以统计出，楼上的代码当中Team的数据， 后续的就都可以了 厉害感谢感谢[/quote] 你先仔细看看那代码能不能用吧

user: user-3
content: 先别急着谢呢，那代码合适吗，第一队第一轮比9场，开玩笑？

user: user-0
content: 引用 1 楼 chxchxkkk的回复:用结构体数组 我用结构体数组尝试了一下，但是我这学的一般，没做出来

user: user-4
content: 用结构体数组

user: user-0
content: 引用 13 楼 寻开心的回复:增加个辅助结构，记录一下 sturct  Score {     int nTeamA;     int nTeamB;    int nScoreA;    int nScoreB; } scores[45];  输入的时候，输入数据到这里 从这里可以统计出，楼上的代码当中Team的数据， 后续的就都可以了 厉害👍🏻👍🏻👍🏻感谢感谢

user: user-0
content: 引用 11 楼 x422833523的回复:#include <stdio.h>  #define BIGGER 1 #define SMALLER 0 #define EQUAL 2  typedef struct Team { 	int team_num;     //for 队伍编号 	int score;		 //for 积分 	int win_balls;	 //for 胜球 	int lose_balls;  //for 输球 }team;  void team_init(team *T) { 	int i; 	for(i = 0;i<10;i++) 	{ 		T[i].team_num = i;	 	} }  void team_input_score(team *T) { 	int i,j; 		for(i = 0; i < 9; i++) 	{ 		printf("NO.%d round\n", i+1);//第几轮 		for(j = i + 1; j < 10; j++) 		{ 			printf("team%d vs team%d\n", i, j); 			printf("input  team[%d] score\n", i); 			scanf("%d",&T[i].win_balls); 			T[j].lose_balls = T[i].win_balls; 			printf("input  team[%d] score\n", j); 			scanf("%d",&T[j].win_balls); 			T[i].lose_balls = T[j].win_balls; 			 			if(T[i].win_balls > T[j].win_balls) 			{ 				T[i].score += 3; 			} 			else if(T[i].win_balls < T[j].win_balls) 			{ 				T[j].score += 3; 			} 			else 			{ 				T[i].score += 1; 				T[j].score += 1; 			} 		} 	} }  //交换队伍排位 for排序 void swap_team(team *a, team *b) { 	team tmp; 	memcpy(&tmp, a, sizeof(team)); 	memcpy(a, b, sizeof(team)); 	memcpy(b, &tmp, sizeof(team)); }  void print_team(team T) { 	printf("team[%d].score = %d\n", T.team_num, T.score); 	printf("team[%d].winballs = %d\n", T.team_num, T.win_balls); 	printf("team[%d].loseballs = %d\n", T.team_num, T.lose_balls); 	printf("\n"); }  //比较队伍排名先后 int compare(team a, team b) { 	if(a.score > b.score) 	{  		return 	BIGGER;	 	} 	else if(a.score < b.score) 	{ 		return SMALLER; 	} 	else 	{ 		if((a.win_balls - a.lose_balls) > (b.win_balls - b.lose_balls)) 		{ 			return BIGGER; 		} 		else if((a.win_balls - a.lose_balls) < (b.win_balls - b.lose_balls)) 		{ 			return SMALLER; 		} 		else 		{ 			if(a.win_balls > b.win_balls) 			{ 				return BIGGER; 			} 			if(a.win_balls > b.win_balls) 			{ 				return SMALLER; 			} 			else 			{ 				return EQUAL; 			} 		} 	} }  //给队伍冒泡排序 void Bubble_Sort(team *T) { 	int i, j; 	for(i = 0;i < 9;i++) 	{  		for(j = 0;j < 9 - i; j++) 		{ 			if(SMALLER == compare(T[j], T[j+1])) 			{ 				swap_team(&T[i], &T[j]); 			} 		} 	} }  int main() { 	int i,j; 	team teams[10] = {0}; 	 	team_init(teams); 	team_input_score(teams); 	Bubble_Sort(teams);  	for(i =0;i<10;i++) 		{ 			print_team(teams[i]); 		} 	return 0; }  棒棒哒！

user: user-5
content: 增加个辅助结构，记录一下 sturct  Score {     int nTeamA;     int nTeamB;    int nScoreA;    int nScoreB; } scores[45];  输入的时候，输入数据到这里 从这里可以统计出，楼上的代码当中Team的数据， 后续的就都可以了

user: user-5
content: 引用 11 楼 x422833523 的回复:#include <stdio.h>  #define BIGGER 1 #define SMALLER 0 #define EQUAL 2  typedef struct Team { 	int team_num;     //for 队伍编号 	int score;		 //for 积分 	int win_balls;	 //for 胜球 	int lose_balls;  //for 输球 }team;  void team_init(team *T) { 	int i; 	for(i = 0;i<10;i++) 	{ 		T[i].team_num = i;	 	} }  void team_input_score(team *T) { 	int i,j; 		for(i = 0; i < 9; i++) 	{ 		printf("NO.%d round\n", i+1);//第几轮 		for(j = i + 1; j < 10; j++) 		{ 			printf("team%d vs team%d\n", i, j); 			printf("input  team[%d] score\n", i); 			scanf("%d",&T[i].win_balls); 			T[j].lose_balls = T[i].win_balls; 			printf("input  team[%d] score\n", j); 			scanf("%d",&T[j].win_balls); 			T[i].lose_balls = T[j].win_balls; 			 			if(T[i].win_balls > T[j].win_balls) 			{ 				T[i].score += 3; 			} 			else if(T[i].win_balls < T[j].win_balls) 			{ 				T[j].score += 3; 			} 			else 			{ 				T[i].score += 1; 				T[j].score += 1; 			} 		} 	} }  //交换队伍排位 for排序 void swap_team(team *a, team *b) { 	team tmp; 	memcpy(&tmp, a, sizeof(team)); 	memcpy(a, b, sizeof(team)); 	memcpy(b, &tmp, sizeof(team)); }  void print_team(team T) { 	printf("team[%d].score = %d\n", T.team_num, T.score); 	printf("team[%d].winballs = %d\n", T.team_num, T.win_balls); 	printf("team[%d].loseballs = %d\n", T.team_num, T.lose_balls); 	printf("\n"); }  //比较队伍排名先后 int compare(team a, team b) { 	if(a.score > b.score) 	{  		return 	BIGGER;	 	} 	else if(a.score < b.score) 	{ 		return SMALLER; 	} 	else 	{ 		if((a.win_balls - a.lose_balls) > (b.win_balls - b.lose_balls)) 		{ 			return BIGGER; 		} 		else if((a.win_balls - a.lose_balls) < (b.win_balls - b.lose_balls)) 		{ 			return SMALLER; 		} 		else 		{ 			if(a.win_balls > b.win_balls) 			{ 				return BIGGER; 			} 			if(a.win_balls > b.win_balls) 			{ 				return SMALLER; 			} 			else 			{ 				return EQUAL; 			} 		} 	} }  //给队伍冒泡排序 void Bubble_Sort(team *T) { 	int i, j; 	for(i = 0;i < 9;i++) 	{  		for(j = 0;j < 9 - i; j++) 		{ 			if(SMALLER == compare(T[j], T[j+1])) 			{ 				swap_team(&T[i], &T[j]); 			} 		} 	} }  int main() { 	int i,j; 	team teams[10] = {0}; 	 	team_init(teams); 	team_input_score(teams); 	Bubble_Sort(teams);  	for(i =0;i<10;i++) 		{ 			print_team(teams[i]); 		} 	return 0; }   题目要求：  输入每场比赛的成绩， 那就要45个数据呢 根据45场比赛统计出上述代码需要的数据就完整了  45场比赛输入两队的编号和各自的进球数目就可以了 上面代码的输入部分稍微改造一下就可以了

user: user-6
content: #include <stdio.h>  #define BIGGER 1 #define SMALLER 0 #define EQUAL 2  typedef struct Team { 	int team_num;     //for 队伍编号 	int score;		 //for 积分 	int win_balls;	 //for 胜球 	int lose_balls;  //for 输球 }team;  void team_init(team *T) { 	int i; 	for(i = 0;i<10;i++) 	{ 		T[i].team_num = i;	 	} }  void team_input_score(team *T) { 	int i,j; 		for(i = 0; i < 9; i++) 	{ 		printf("NO.%d round\n", i+1);//第几轮 		for(j = i + 1; j < 10; j++) 		{ 			printf("team%d vs team%d\n", i, j); 			printf("input  team[%d] score\n", i); 			scanf("%d",&T[i].win_balls); 			T[j].lose_balls = T[i].win_balls; 			printf("input  team[%d] score\n", j); 			scanf("%d",&T[j].win_balls); 			T[i].lose_balls = T[j].win_balls; 			 			if(T[i].win_balls > T[j].win_balls) 			{ 				T[i].score += 3; 			} 			else if(T[i].win_balls < T[j].win_balls) 			{ 				T[j].score += 3; 			} 			else 			{ 				T[i].score += 1; 				T[j].score += 1; 			} 		} 	} }  //交换队伍排位 for排序 void swap_team(team *a, team *b) { 	team tmp; 	memcpy(&tmp, a, sizeof(team)); 	memcpy(a, b, sizeof(team)); 	memcpy(b, &tmp, sizeof(team)); }  void print_team(team T) { 	printf("team[%d].score = %d\n", T.team_num, T.score); 	printf("team[%d].winballs = %d\n", T.team_num, T.win_balls); 	printf("team[%d].loseballs = %d\n", T.team_num, T.lose_balls); 	printf("\n"); }  //比较队伍排名先后 int compare(team a, team b) { 	if(a.score > b.score) 	{  		return 	BIGGER;	 	} 	else if(a.score < b.score) 	{ 		return SMALLER; 	} 	else 	{ 		if((a.win_balls - a.lose_balls) > (b.win_balls - b.lose_balls)) 		{ 			return BIGGER; 		} 		else if((a.win_balls - a.lose_balls) < (b.win_balls - b.lose_balls)) 		{ 			return SMALLER; 		} 		else 		{ 			if(a.win_balls > b.win_balls) 			{ 				return BIGGER; 			} 			if(a.win_balls > b.win_balls) 			{ 				return SMALLER; 			} 			else 			{ 				return EQUAL; 			} 		} 	} }  //给队伍冒泡排序 void Bubble_Sort(team *T) { 	int i, j; 	for(i = 0;i < 9;i++) 	{  		for(j = 0;j < 9 - i; j++) 		{ 			if(SMALLER == compare(T[j], T[j+1])) 			{ 				swap_team(&T[i], &T[j]); 			} 		} 	} }  int main() { 	int i,j; 	team teams[10] = {0}; 	 	team_init(teams); 	team_input_score(teams); 	Bubble_Sort(teams);  	for(i =0;i<10;i++) 		{ 			print_team(teams[i]); 		} 	return 0; }

user: user-7
content: 难道你要和自己打一场？

user: user-8
content: 10个足球队进行9轮循环赛。 我感觉哪里不对。难道不应该至少10轮才叫循环赛呀

user: user-0
content: 引用 5 楼 ggglivw的回复:1.确实太简单。2.真要写也不是几行，10行代码能写完。你可以自己写，有问题贴出来大家回答。如果类似的题目几百行都要写了调试，我们都没时间工作了，全部给论坛做题。。。 哦哦  好的  谢谢大佬了

user: user-7
content: 1.确实太简单。2.真要写也不是几行，10行代码能写完。你可以自己写，有问题贴出来大家回答。如果类似的题目几百行都要写了调试，我们都没时间工作了，全部给论坛做题。。。

user: user-0
content: 引用 3 楼 ggglivw的回复:看描述很简单，结构体数组轻松搞定，没有必要用链表和全局变量，根本不需要的。 大佬，我一个初学者就算知道用结构体数组也编不出来。在你们看如此简单，在我看来，天要塌了

user: user-7
content: 看描述很简单，结构体数组轻松搞定，没有必要用链表和全局变量，根本不需要的。