5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 ,编程确定比赛的名次。

    xiaoxiao2025-05-05  13

    问题描述:

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

    问题分析:

    每人说对了一半可以表述如下:

    A说:(B == 2) + (A == 3) == 1

    B说:(B == 2) + (E == 4) == 1

    C说:(C == 1) + (D == 2) == 1

    D说:(C == 5) + (D == 3) == 1

    E说:(E == 4) + (A == 1) == 1)

    这样会输出很多种可能性,我们需要加上约束条件:

    A * B * C * D * E == 120(每个人一个名次,乘起来应该是120)

    源代码:

    #include <stdio.h> #include <windows.h> void main() { int A, B, C, D, E; for (A = 1; A < 6; A++) { for (B = 1; B < 6; B++) { for (C = 1; C < 6; C++) { for (D = 1; D < 6; D++) { for (E = 1; E < 6; E++) { if ((((B == 2) + (A == 3) == 1) && ((B == 2) + (E == 4) == 1) && ((C == 1) + (D == 2) == 1) && ((C == 5) + (D == 3) == 1) && ((E == 4) + (A == 1) == 1)) && (A * B * C * D * E == 120)) { printf("A= %d\nB= %d\nC= %d\nD= %d\nE= %d\n", A, B, C, D, E); } } } } } } system("pause"); return 0; }

    小结:

    要善于将汉语表述转换为机器语言,为之勤加练习吧!

    最新回复(0)