第一题比较容易,就是穷举个个数,取出各个位计算,比较一下就行了
第二题
#include <stdio.h>
int test(int a,int b,int c) //test三个参数,分别为张三,李四,王五
{
if((!b==a)&&(!c==b))//张三说李四在说谎,李四说王五在说谎,是互斥的关系
{
if(c==1)//符合第一个条件后,假设王五说真话
{
if(a==0 && b==0) // 则张三和李四都在说谎
{
return 1;//符合条件
}else{
return 0; //不符合条件
}
}else{ //符合第一个条件后,假设王五说假话
if((a||b)==1){ // 则张三和李四至少有一个说真话(都在说谎的非运算)
return 1;//符合条件
}else{
return 0; //不符合条件
}
}
}else{
return 0; //不符合条件
}
}
int main(int argc, char *argv[])
{
int result[8];
int i;
/* 三个人是否说谎话的8种组合 */
result[0] = test(1,1,1);//test三个参数,分别为张三,李四,王五,1表示真话,0表示假话
result[1] = test(1,1,0);
result[2] = test(1,0,1);
result[3] = test(1,0,0);
result[4] = test(0,1,1);
result[5] = test(0,1,0);
result[6] = test(0,0,1);
result[7] = test(0,0,0);
for( i=0;i<8;i++){
printf("result[%d]=%d\n",i,result[i]);
}
system("PAUSE");
return 0;
}
根据运算结果result[5]为1,所以,张三和王五说假话,李四说真话。
追问我其实看不懂这些,你只需要给我把答案搞上就行。
追答答案:张三和王五说假话,李四说真话