主题:一个问题
cskeleton
[专家分:10] 发布于 2008-05-13 23:47:00
一个问题。。。
题目:
张三说李四说了假话,
李四说王五说了假话,
王五说张三和李四都说了假话,
请问谁说了真话,谁说了假话。
我看同学们用C语言用0和1可以来运算,用循环做的。。
我开始想在C++中,用布尔型做,,结果做不下去…………用C++怎么解决这个问题诶?
——————————
高中的时候学Pascal,在Pascal板块里面呆了一段时间。。。结果后来没学了,忙高考。。现在大学了人们都建议我学C++,所以来这里了。。。
回复列表 (共8个回复)
沙发
posechang [专家分:100] 发布于 2008-05-14 09:54:00
首先,你的题目是错的,应该加入一个条件,那就是“其中只有一个人说的是真话”。不然程序是死循环。我按我的理解写了程序。
#include <iostream.h>
void main()
{
bool a,b,c;
while(((a = 1)&&(b = 0)&&(c = 0))
||((b = 1)&&(a = 0)&&(c = 0))
||((c = 1)&&(b = 0)&&(a = 0)))
// while((a = 1)||(b = 1)||(c = 1))
{
if(a)
{
b = 0;
cout<<"test a!"<<endl;
}
if(b)
{
c = 0;
cout<<"test b!"<<endl;
}
if(c)
{
a = b = 0;
cout<<"test c!"<<endl;
}
}
if(a)
{
cout<<"a½²µÄÊÇÕæ»°"<<endl;
}
if(b)
{
cout<<"b½²µÄÊÇÕæ»°"<<endl;
}
if(c)
{
cout<<"c½²µÄÊÇÕæ»°"<<endl;
}
}
其中注释掉的就是你题目的意思。
板凳
posechang [专家分:100] 发布于 2008-05-14 09:56:00
cout<<"test c!"<<endl;等
这是我测试注释掉的话是否是死循环的,可以去掉,没有意义
3 楼
posechang [专家分:100] 发布于 2008-05-14 09:58:00
刚又发现:
cout<<"a½²µÄÊÇÕæ»°"<<endl;
这个是我在VC6.0里写的复制过来的,所以出了问题,原话应该是:
cout<<"a说的是真话"<<endl;等等
4 楼
cskeleton [专家分:10] 发布于 2008-05-14 22:36:00
还是用0和1去运算,不能用布尔型吧?
对,题目还差那句话。。。。
谢谢了~~
5 楼
posechang [专家分:100] 发布于 2008-05-15 21:52:00
0和1和BOOL型没多大分别吧?
6 楼
posechang [专家分:100] 发布于 2008-05-16 12:06:00
回楼主,我的代码是错误的,请取消给我的评分。我现在还在想做法。
7 楼
cskeleton [专家分:10] 发布于 2008-05-26 21:41:00
怎么取消。。
我没仔细看呢,一天太颓废勒
8 楼
cskeleton [专家分:10] 发布于 2008-05-26 21:45:00
[quote]0和1和BOOL型没多大分别吧?[/quote]
我看C语言老师给他们讲的是用整形来做的。。
int a,b,c;
这样来写的这个东西。。
我来回复