简单又不简单的C语言题: 适合初学者 又不适合初学者:::::::>>>干什么呢?还不近来看看!
两个乒乓球队进行比赛,各出三人.甲队为A,B,C三人,乙队为X,Y,Z三人.已抽签决定比赛名单.有人向队员打听比赛名单,A说他不和X比,C说他不和X,Z比,请编程序找出三对赛手的名单.
声明:1.如果此题简单的话 麻烦您用C语言写 ,不要用C++ .
如果此贴的问题觉得无聊,那么请您出去.希望各位前辈高手们认真回答此题 非常感谢.
问题点数:0、回复次数:5Top
1 楼smalltalk(老徐)回复于 2003-11-03 00:12:15 得分 0
问题解决,如下C代码:
#include "stdio.h"
typedef struct _T_VS
{
char x;
char y;
} VS;
#define TEAM_NUM 3
#define MAXMATCH (TEAM_NUM*TEAM_NUM)
int main()
{
unsigned int i,j;
char i_teams[TEAM_NUM] = {'A','B','C'};
char ii_teams[TEAM_NUM] = {'X','Y','Z'};
unsigned int count = 0;
unsigned int count2 = 0;
VS matches[MAXMATCH];
VS result[TEAM_NUM];
char person;
for (i = 0; i < TEAM_NUM; i++)
{
for (j = 0; j < TEAM_NUM; j++)
{
if( ( (i_teams[i]== 'A') && (ii_teams[j] == 'X') )
|| ( (i_teams[i]== 'C') && (ii_teams[j] == 'X') )
|| ( (i_teams[i]== 'C') && (ii_teams[j] == 'Z') ) )
continue;
else
{
matches[count].x = i_teams[i];
matches[count].y = ii_teams[j];
count++;
}
}
}
count2 = 0;
person = 'C';
for (i=0; i< count; i++)
{
if (matches[i].x == person)
{
result[0].x = matches[i].x;
result[0].y = matches[i].y;
break;
}
}
person = 'A';
for (i=0; i< count; i++)
{
if ( (matches[i].x == person) && ( matches[i].y != result[0].y) )
{
result[1].x = matches[i].x;
result[1].y = matches[i].y;
break;
}
}
person = 'B';
for (i=0; i< count; i++)
{
if ( (matches[i].x == person) && ( matches[i].y != result[0].y)
&& ( matches[i].y != result[1].y))
{
result[2].x = matches[i].x;
result[2].y = matches[i].y;
break;
}
}
printf("Play list:\n");
for (i=0; i< TEAM_NUM; i++)
{
printf("%c vs % c \n", result[i].x, result[i].y);
}
return 0;
}
输出为:
Play list:
Play list:
C vs Y
A vs Z
B vs XTop
2 楼chaonet(我是菜鸟)回复于 2003-11-03 01:05:19 得分 0
upTop
3 楼tass(怪物猪)回复于 2003-11-03 15:02:58 得分 0
upTop
4 楼Bandry(菜鸟-舍我其谁)回复于 2003-11-03 15:15:04 得分 0
不要局限于三个人,应该设两个数组,保存两队的参赛队员,通过循环来解决Top
5 楼smalltalk(老徐)回复于 2003-11-08 11:58:10 得分 0
它这里是带条件的排序问题。Top




