狱警发现一囚室的窗户栅栏被剪断了。该囚室有四个囚犯。
	A说:不是我
	B说:是C
	C说:是D
	D说:C胡说
已知三个人说真话,一个人说假话。请找出说谎的人。

解析:
可能的状况有lier=‘A',lier=’B',lier=‘C',lier=‘D'。
枚举是按照这 4 种假定逐一地去测试4个人的话有几个人的话是真话。如果不满足3句话为真,就否定这一个假定。
when lier=‘A',代入四句话中
说话人	说的话	关系表达式	值
A	不是我	lier!=‘A’	0
B	是C	Lier==‘C’	0
C	是D	Lier==‘D’	0
D	C胡说	Lier!=‘D’	1
结论:A没有说谎、、、、、
用枚举法分析完后用画出框图,一目了然

下面是我根据程序框图写出的程序,仅供参考

#include<iostream>
using namespace std;
int main()
{
	int k,sum,g;
	char lier;
	for(k=0;k<4;k++)
	{
		lier='A'+k;
		sum=(lier!='A')+(lier=='C')+(lier=='D')+(lier!='D');//只有一个lier,所以当sum=3时,有一个lier成立
		if(sum==3)
		{
			g=1;
			break;
		}
	}
	if(g!=1)
		cout<<"无解"<<endl;
	else
		cout<<"lier为"<<lier<<endl;
	return 0;
}