上周的电脑报因为回家到昨天才拿到报纸,把里面的编程点将做了一下,现在贴出来,以享读者。(这周的题目好像有点过分简单了,^_^)呵呵,突然发现这道题在我收集的C语言程序百例里面的第50题就是,但里面的编码好像没有我的简单明了,大家可以比较参考一下。题目:张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三人中到底谁说的是真话,谁说的是假话?安安注:源程序写的不是很规范,其中有一语句还错了,谢谢“波涛 ”的提醒。我的程序:/*算法思想:题目用整型zhs、lis、waw分别表示张三、李四和王五,数值1表示说真话,数值0表示说谎。由题目可知,张三和李四互逆,也就是张三说谎则李四说真,反之;李四和王五互逆,因此lis=!zhs,waw=!lis。采用C++编程,在VC++6.0上通过运行,结果:李四说真话;张三和王五说假话*/ #include<iostream>using namespace std;int main(){ int i,zhs,lis,waw; for(i=0;i<2;i++) { zhs=i; lis=!zhs; waw=!lis; if(waw==1&&zhs==0&&lis==0)//原来错了,谢谢“波涛 ”的提醒。 cout<<"王五说真话;张三和李四说谎"<<endl; if(waw==0&&(zhs==1||lis==1)) { if(zhs==1) cout<<"张三说真话;李四和王五说假话"<<endl; else cout<<"李四说真话;张三和王五说假话"<<endl; } } return 0;}

评论