题目: 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
思路:
每个选手只能“占领”一个名次,不存在并列问题。 所以可用if(abcde==120) 作为判断条件。
A,B,C,D,E每个人都只说对了一半,可使用C语言中的逻辑判断。 eg. A: if((b == 2)+(a == 3) == 1)
判断条件如下,条件成立则进行打印名次:
if (((a == 3) + (b == 2) == 1) && ((b == 2) + (e == 4) == 1) && ((c == 1) + (d == 2) == 1) && ((d == 3) + (c == 5) == 1) && ((e == 4) + (a == 1) == 1))完整代码如下:
int main() { int a = 0; int b = 0; int c = 0; int d = 0; int e = 0; 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 (a*b*c*d*e == 120) { if (((a == 3) + (b == 2) == 1) && ((b == 2) + (e == 4) == 1) && ((c == 1) + (d == 2) == 1) && ((d == 3) + (c == 5) == 1) && ((e == 4) + (a == 1) == 1)) { printf("a=%d b=%d c=%d d=%d e=%d \n", a, b, c, d, e); } } } } } } } system("pause"); return 0; }