题目:

两个乒乓球队进行比赛,各出三人。甲队为A,B,C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X,Z比,请编程序找出3对赛车的名单。


分析:

通过分析题目,我们可以很直观地想到:利用3个for循环,遍历一遍。直到满足限制条件时跳出来即可。

题目中有2条限制条件(第2条没有直说):

  1. A 不等于 X, C 不等于 X、Z
  2. A、B、C的对手各不相同


代码实现:

#include <stdio.h>

int main()
{
	char A = '0';
	char B = '0';
	char C = '0';

	for (A = 'X'; A <= 'Z'; A++)
	{
		for (B = 'X'; B <= 'Z'; B++)
		{
			for (C = 'X'; C <= 'Z'; C++)
			{
        //下面2条if语句其实可以合并成一条
        //但为了提高可读性,暂时写成了2条
				if (A != 'X' && C != 'X' && C != 'Z')//题目给出的限制条件
				{
          //题目的隐含条件,3个人的对手各不一样
					if (A != B && A != C && B != C)
					{
						printf("A vs %c\nB vs %c\nC vs %c\n", A, B, C);
            break;
					}
				}
			}
		}
	}
	return 0;
}

运行结果:

谭浩强 第5版 第5章 第17题_for循环