回 帖 发 新 帖 刷新版面

主题:一个问题

一个问题。。。

题目:
张三说李四说了假话,
李四说王五说了假话,
王五说张三和李四都说了假话,
请问谁说了真话,谁说了假话。

我看同学们用C语言用0和1可以来运算,用循环做的。。

我开始想在C++中,用布尔型做,,结果做不下去…………用C++怎么解决这个问题诶?

——————————

高中的时候学Pascal,在Pascal板块里面呆了一段时间。。。结果后来没学了,忙高考。。现在大学了人们都建议我学C++,所以来这里了。。。

回复列表 (共8个回复)

沙发

首先,你的题目是错的,应该加入一个条件,那就是“其中只有一个人说的是真话”。不然程序是死循环。我按我的理解写了程序。



#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&frac12;&sup2;&micro;&Auml;&Ecirc;&Ccedil;&Otilde;&aelig;&raquo;°"<<endl;
    }
    if(b)
    {
        cout<<"b&frac12;&sup2;&micro;&Auml;&Ecirc;&Ccedil;&Otilde;&aelig;&raquo;°"<<endl;
    }
    if(c)
    {
        cout<<"c&frac12;&sup2;&micro;&Auml;&Ecirc;&Ccedil;&Otilde;&aelig;&raquo;°"<<endl;
    }
}

其中注释掉的就是你题目的意思。

板凳

cout<<"test c!"<<endl;等
这是我测试注释掉的话是否是死循环的,可以去掉,没有意义

3 楼

刚又发现:

cout<<"a&frac12;&sup2;&micro;&Auml;&Ecirc;&Ccedil;&Otilde;&aelig;&raquo;°"<<endl;

这个是我在VC6.0里写的复制过来的,所以出了问题,原话应该是:
cout<<"a说的是真话"<<endl;等等

4 楼

还是用0和1去运算,不能用布尔型吧?

对,题目还差那句话。。。。

谢谢了~~

5 楼

0和1和BOOL型没多大分别吧?

6 楼

回楼主,我的代码是错误的,请取消给我的评分。我现在还在想做法。

7 楼


怎么取消。。

我没仔细看呢,一天太颓废勒

8 楼

[quote]0和1和BOOL型没多大分别吧?[/quote]


我看C语言老师给他们讲的是用整形来做的。。

int a,b,c;
这样来写的这个东西。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册