亲电加成反应举例:有个C程序,能编译无问题,也能运行,但达不到预期效果,希望高手指教并改错!!!

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 21:15:56
题目:
打比赛,甲队A,B,C三人,乙队x,y,z三人。其中A不和x比,C不和x及z比,用C语言写出比赛名单。

我的程序:
*********************************************
#include<stdio.h>
int main(void)
{
int A=0,B=0,C=0,x=0,y=0,z=0;
for(A=1;A<=3;++A)
for(B=1;B<=3;++B)
{
if(A==B) continue;
for(C=1;C<=3;++C)
{
if((C==A)||(C==B)) continue;
for(x=1;x<=3;++x)
{
if((x==A)||(x==B)) continue;
for(y=1;y<=3;++y)
{
if(y==x) continue;
for(z=1;z<=3;++z)
{
if((z==x)||(z==y)||(z==C)) continue;
printf("A=%d,B=%d,C=%d\n",A,B,C);
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
}
}
}
}
return (0);
}
*********************************************
我不知道上述程序哪儿有问题,请改正!谢谢

你上传的程序太让人费解了,给一个忠告,如果不是题目要求一定要用“break,continue”语句,就要尽可能的去避免它,因为使用这种语句多了,阅读起来很困难。
我先给一个大至的方向,根据你所给的题目,我们可以把它分成两个集合:一个是队伍集合;另一个是比赛法则集合(“1”不可以比和“0”可以比)。
如果我们用一个二维数组(3*3的)来表示比赛法则的话,就会很直观了。我们把这个二维数组的横坐标向量分别用A、B、C来表示,而纵向量分别用X、Y、Z来表示:

#ABC
X101
Y000
Z001
是不是一目了然呢?那又怎么样才能得到比赛名单呢?我们再用两个一维数组分别存放两支队伍的成员名单,根据上面的比赛法则是不是很快就能做出来呢。
相信你一定能成功!(提示:使用双循环,逐一比对)

我学的时候就遇到这个问题,没有解决呢