[求帮忙简化]自己做出来了,但是感觉太啰嗦了..
新手自学C语言中..不知道有没有更好的方法实现这个程序
刚学到for循环..数组什么的还没学,只能用循环
程序代码:
/* 有 A, B, C, D, E 共5人参加考试,考试后这几个人对名次的猜测如下. * A 认为: E一定是第一. * B 认为: 我可能是第二. * C 认为: A最差. * D 认为: C一定不是第一. * E 认为: D一定是第一. * * 已知,这几个人中考第一和第二的人猜测是正确的,且E不是第二也不是第三 * 问实际这几个人的名次. */ #include <stdio.h> #define ZS 5 int main(void) { unsigned int a, b, c, d, e; //5个人的名次 unsigned int A, B, C, D, E; //5个人的判断 unsigned int he = 1 + 2 + 3 + 4 + 5; for (a = 1; a <= ZS; a++) for (b = 1; b <= ZS; b++) for (c = 1; c <= ZS; c++) for (d = 1; d <= ZS; d++) for (e = 1; e <= ZS; e++) { if ((a + b + c + d + e == he) && \ (a != b && a != c && a != d && a != e) && \ (b != c && b != d && b != e) && \ (c != d && c != e) && \ (d != e) && \ e != 2 && e != 3) { A = e == 1; B = b == 2; C = a == 5; D = c != 1; E = d == 1; if (A + B == 2 && C + D + E == 0 && a + b == 3) { printf("%u , %u , %u , %u , %u\n", A, B, C, D, E); printf("%u , %u , %u , %u , %u\n", a, b, c, d, e); } else if (A + C == 2 && B + D + E == 0 && a + c == 3) { printf("%u , %u , %u , %u , %u\n", A, B, C, D, E); printf("%u , %u , %u , %u , %u\n", a, b, c, d, e); } else if (A + D == 2 && B + C + E == 0 && a + d == 3) { printf("%u , %u , %u , %u , %u\n", A, B, C, D, E); printf("%u , %u , %u , %u , %u\n", a, b, c, d, e); } else if (A + E == 2 && B + C + D == 0 && a + e == 3) { printf("%u , %u , %u , %u , %u\n", A, B, C, D, E); printf("%u , %u , %u , %u , %u\n", a, b, c, d, e); } else if (B + C == 2 && A + D + E == 0 && b + c == 3) { printf("%u , %u , %u , %u , %u\n", A, B, C, D, E); printf("%u , %u , %u , %u , %u\n", a, b, c, d, e); } else if (B + D == 2 && A + C + E == 0 && b + d == 3) { printf("%u , %u , %u , %u , %u\n", A, B, C, D, E); printf("%u , %u , %u , %u , %u\n", a, b, c, d, e); } else if (B + E == 2 && A + C + D == 0 && b + e == 3) { printf("%u , %u , %u , %u , %u\n", A, B, C, D, E); printf("%u , %u , %u , %u , %u\n", a, b, c, d, e); } else if (C + D == 2 && A + B + E == 0 && c + d == 3) { printf("%u , %u , %u , %u , %u\n", A, B, C, D, E); printf("%u , %u , %u , %u , %u\n", a, b, c, d, e); } else if (C + E == 2 && A + B + D == 0 && c + e == 3) { printf("%u , %u , %u , %u , %u\n", A, B, C, D, E); printf("%u , %u , %u , %u , %u\n", a, b, c, d, e); } else if (D + E == 2 && A + B + C == 0 && d + e == 3) { printf("%u , %u , %u , %u , %u\n", A, B, C, D, E); printf("%u , %u , %u , %u , %u\n", a, b, c, d, e); } } } return 0; }