公司要从赵钱孙李周五名员工中选派一些人出国 输入若干条件 编程实现输出选派结果 用C语言编写

若干条件是指比如 (若赵去、则钱也去... 孙、李两人同去或者同不去) 等等 这种蕴含 合取 析取的关系

其实,在你给出相应的若干条件时,就已经差不多就确定那些人满足条件了啊,用逻辑来表示的话,可以这样:去赋值1,不去赋值0.
5个人用5个变量,分别为0或1,一个条件就能设置一遍5个变量的值,可以用if-else。
另外一种高级的写法就是用位运算,用5位二进制的00000,来表示,每个位有两种变化0/1,然后根据条件给相应的位赋值,最后得出的值就可知道了,
比如11111表示5个人都去。

#include "stdafx.h"
#include

using namespace std;

int logic(int x,int y, int z)
{
if(z==0x31)
return x & y;
else if(z==0x32)
return x | y;
else if(z==0x33)
return (!x) | y;
else
return 0;
}

int test(int tmp)
{
if(tmp%2==1)
return tmp&1;
else
return tmp&0;
}

int _tmain(int argc, _TCHAR* argv[])
{

int n;
cout<<"请输入条件数量"<<endl;
cin>>n;//条件数
//for(int i=0;i<n;i++)
char *x=(char*)malloc(n*sizeof(char));
char *y=(char*)malloc(n*sizeof(char));
char *z=(char*)malloc(n*sizeof(char));

    cout<<"请输入3个数字,前两个分别表示赵钱孙李周对应序号,第三个表示关系类型"<<endl;
for(int i=0;i<n;i++)
    cin>>x[i]>>y[i]>>z[i];
for ( int na=0;na<32;na++)
{
    for(int j=0;j<n;j++)
    {
    int tmp1=na>>(x[j]-'0');
    int tmp2=na>>(y[j]-'0');

    tmp1=test(tmp1);
    tmp2=test(tmp2);

    if(logic(tmp1,tmp2,z[j]))
    {
        if(j==n-1)
        {
            char buf[30]={0};
            itoa(na,buf,2);
            cout<<buf<<endl;
        }
    }
    }
}
return 0;

}

 我是初学者 用c++写了一个 应该差不多是这样