循環應用題——誰是小偷

邏輯表達式的實際應用

題目來源:《C/C++程序設計》一書

題目描述

A,B,C,D中一人是小偷,每個人不說真話便說的是假話
A:B沒有偷,是D偷的
B : 我沒有偷,是C偷的
C : A沒有偷,是B偷的
D : 我沒有偷

分析

a b c d 四個變量分別代表A,B,C ,D的狀態,取值爲1 時表示偷,0 表示未偷。循環狀態。B沒有偷,是D偷的可以表示爲!B&&D,當爲假命題時,可以表示爲B&&!D,綜合起來表示爲B+D==1;同理,其他的可以描述爲:B+C==1;A+B==1;a+b+c+d==1

代碼實現

#include<iostream>
using namespace std;
int main()
{
    int a, b, c, d;
    for (a = 0; a<2; a++)
        for (b = 0; b<2; b++)
            for (c = 0; c<2; c++)
                for (d = 0; d<2; d++)
                    {
                        if ((b+d==1)&&(b+c==1)&&(a+b==1)&&(a+b+c+d==1))
                        {
                            if (a)
                                cout << "A偷的" << endl;
                            if (b)
                                cout << "B偷的" << endl;
                            if (c)
                                cout << "C偷的" << endl;
                            if (d)
                                cout << "D偷的" << endl;
                        }
                    }
    system("pause");
    return 0;
}

運行結果

B偷的
請按任意鍵繼續…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章