写一个程序确定5位运动员比赛的名次

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。 

#include<stdio.h>
#include<stdlib.h>
int main() {
	int a, b, c, d, e;
	//每个人的名次都有五种可能
	for (a = 1; a <= 5; a++) {
		for (b = 1; b <= 5; b++) {
			for (c = 1; c <= 5; c++) {
				for (d = 1; d <= 5; d++) {
					for (e = 1; e <= 5; e++) {
						//每位选手都只说对了一半,则各有两种情况。
						//要么前部分预测正确,后部分错误。要么后部分预测正确,前部分错误
						//以此判断它们的正确情况
						if ((b == 2 && a != 3) || (b != 2 && a == 3)) {
							if ((b == 2 && e != 4) || (b != 2 && e == 4)) {
								if ((c == 1 && d != 2) || (c != 1 && d == 2)){
									if ((c == 5 && d != 3) || (c != 5 && d == 3)) {
										if ((e == 4 && a != 1) || (e != 4 && a == 1)) {
                                        //a,b,c,d,e五个值均不相同
										if ((a != b) && (a != c) && (a != d) && (a != e)
												&& (b != c) && (b != d) && (b != e) 
												&& (c != d) && (c != e)
												&& (d != e)) {
									printf("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
											}										
										}
									}
							}
						}
					}
				}
			}
		}
	}	
}	
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43267837/article/details/88925900