youniankang@163.com

2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
  人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
   (5)如果E参加,那么A和D也都参加。
-----------------------------------------------------------------------------------------------------
我也来发表一下我的做法:
include <iostream>
using namespace std;
int main()
{
   int part[2]={'不参加','参加'];//part[0]表示不参加,part[1]表示参加
   for(int A=0;A<=1;A++)//A、B\C\D分别控制在1或0
   for(int B=0;B<=1;B++)
   for(int c=0;C<=1;C++)
   for(int D=0;D<=1;D++)
    if(A&&B==1)&&(B||C==1)&&(C&&D==1||C&&D==0)&&(D||E==1)&&(E&&A&&D==1)
     { cout<<part[A]<<"   "<<part[b]<<"   "<<part[C]<<"   "<<part[D]<<endl;
    }
return 0;
}
由于我是在网吧编的,没有编译环境,不知道语法对不对,如果有不明白的加我的QQ:12814441
 2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
  人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
--------------------------------------------------
我个人的做法,个人觉得这样做要简单一些,如果不懂的加我的QQ:12814441
#include <iostream>
using namespace std;
#include <string>
int main()
{
    int a,b,c,d,e;                //设置5个变量,分别表是不同的5个人
    string f[2]={"不去","去"};  ///定义了一个字符串数组,f[1]={表示"不去"},f[2]={表示"去"}
  for(a=0;a<=1;a++)             /*a表示0,1;0表示不成立,就不去;1表示成立,就去*/
    {for(b=0;b<=1;b++)          /*b表示0,1;0表示不成立,就不去;1表示成立,就去*/
     for(c=0;c<=1;c++)          /*c表示0,1;0表示不成立,就不去;1表示成立,就去*/
     { if(b!=c)                 //a不能等c
         for(d=0;d<=1;d++)      /*d表示0,1;0表示不成立,就不去;1表示成立,就去*/
             for(e=0;e<=1;e++)  /*e表示0,1;0表示不成立,就不去;1表示成立,就去*/
             {if(d!=e)          //d不能等于e
                if(e==1&&a&&b)   /// 只有当e有成立时; a,b就必然成立
              
                 if((a&&b||!a)&&(b||c)&&(c&&d||!(c||d))&&(d||e)||(e&&a&&b))     /*根据条件进很逻辑判断*/                                                                                
                    cout<<"A"<<f[a]<<" "<<"B"<<f[b]<<" "<<"C"<<f[c]<<" "<<"D"<<f[d]<<" "<<"E"<<f[e]<<" "<<endl;
             }   //if
     } //if
  } //for
return 0; //反回到主函数
}

[此贴子已经被作者于2007-7-29 14:03:20编辑过]

[此贴子已经被作者于2007-8-1 17:15:48编辑过]