谁能帮我用C++编写这么一个小程序

来源:百度知道 编辑:UC知道 时间:2024/06/24 13:17:39
2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:

(1)A参加时,B也参加;

(2)B和C只有一个人参加;

(3)C和D或者都参加,或者都不参加;

(4)D和E中至少有一个人参加;

(5)如果E参加,那么A和D也都参加。

竟然比我还快~像2楼说的,这个就是用位的方法啦
#include <iostream>
#include <cstdlib>

using namespace std;

#define NOTAKE 0
#define TAKE 1

/*每个队员用一个位来表示,从高位到低位分别为EDBCA
相应位为1表示参赛,为0表示不参赛*/
#define A (players & 0x01)
#define B ((players & 0x02)>>1)
#define C ((players & 0x04)>>2)
#define D ((players & 0x08)>>3)
#define E ((players & 0x10)>>4)

int players;

bool check() {

if (((A == TAKE)? B == TAKE: true) /* A参加时,B也参加; */
&& (B != C) /*B和C只有一个人参加; */
&& (C == D) /*C和D或者都参加,或者都不参加;*/
&& (D == TAKE || E == TAKE) /*D和E中至少有一个人参加;*/
&& (E == TAKE? (A == TAKE && D == TAKE): true)) /*如果E参加,那么A和D也都参加。*/ {
return true;
}
return false;
}

int main(int argc, char *argv[])
{
int i;

for (players = 0; players < 32; players++){