上周的电脑报因为回家到昨天才拿到报纸,把里面的编程点将做了一下,现在贴出来,以享读者。(这周的题目好像有点过分简单了,^_^)
呵呵,突然发现这道题在我收集的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;
}
评论