C语言问题,下面这个例题看不懂,谁能解释一下,谢谢

两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定
比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
三队赛手的名单。
#include "stdio.h"
main()
{
char i,j,k;
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
{
if(i!=j)
for(k='x';k<='z';k++)
{
if(i!=k&&j!=k)
{
if(i!='x'&&k!='x'&&k!='z')
printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}

在main()前面加一个void,变成void main().
否则在visual studio 2005+的环境下编译不能通过。

这个程序用i, j, k分别表示a,b,c对应的选择,每个人都是从x到z的循环。
如果遇到i,j,k值相等的时候就继续下一个循环,因为每个人对阵的对手不能相同。
if(i!='x'&&k!='x'&&k!='z')这句是根据已知条件进行的检查,
要求a不能是对阵x,k不能对阵x和z,
如果所有的检查都通过了,那么就printf输出这组解。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-26
你把ijk看做是abc,a可能对xyz,b,c同样可能对手xyz,条件for(i='x';i<='z';i++) for(j='x';j<='z';j++) for(k='x';k<='z';k++)但他们的对对手不能一样,所以有 if(i!=j)和 if(i!=k&&j!=k),又因为有a说他不和x比,c说他不和x,z比的条件,所以有 if(i!='x'&&k!='x'&&k!='z'),只要满足以上条件就能得出结果
第2个回答  2011-04-26
C语言是一门很重要的基础语言,如果想要学好就多看一些书。。。。
相似回答