A、B、C、D、E、F共六个人参加程序竞赛。已知A和B至少有一人获奖;A、C、D中至少有两个人获奖;A和E中至多有一个人获奖;B和F或者同时获奖,或者都未获奖;C和E的获奖情况也相同;如果E未获奖,则F也不可能获奖;并且C、D、E、F中至多三个人获奖。问哪些人获了奖。将判断条件用逻辑语句表示如下:
A和B至少有一人获奖 : a && b
C和E的获奖情况也相同 : c == e
A和E中至多有一个人获奖 : !(a && e)
A、C、D中至少有两个人获奖 : ( a + c + d ) >= 2
C、D、E、F中至多三个人获奖 : ( c + d + e + f ) <= 3
如果E未获奖,则F也不可能获奖 : e || !f
B和F或者同时获奖,或者都未获奖 : b == f
则用C语言实现如下:
#include "stdio.h" #include "stdlib.h" #define Max 2 // 指出 a b c d e f 的可能情况数目 int main(int argc,char *argv[]) { // a b c d e f 分别意味着他们是否获奖,即 0(未获奖) 或者 1(获奖) int a = 0 , b = 0, c = 0, d = 0, e = 0 ,f = 0; |