狱警发现一囚室的窗户栅栏被剪断了。该囚室有四个囚犯。 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; }
Who is lier?
最新推荐文章于 2022-12-29 11:30:00 发布