c++语言程序百例精解06

c++语言程序百例精解06

ID:14411873

大小:55.00 KB

页数:22页

时间:2018-07-28

c++语言程序百例精解06_第1页
c++语言程序百例精解06_第2页
c++语言程序百例精解06_第3页
c++语言程序百例精解06_第4页
c++语言程序百例精解06_第5页
资源描述:

《c++语言程序百例精解06》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C++语言程序百例精解06C/C++语言经典、实用、趣味程序设计编程百例精解(6)51.谁是窃贼公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中:甲说:“乙没有偷,是丁偷的。”乙说:“我没有偷,是丙便的。”丙说:“甲没有偷,是乙偷的。”丁说:“我没有偷。”请根据这四人的答话判断谁是盗窃者。*问题分析与算法设计假设A、B、C、D分别代表四个人,变量的值为1代表该人是窃贼。由题目已知:四人中仅有一名是窃贼,且这四个人中的每个

2、人要么说真话,要么说假话,而由于甲、乙、丙三人都说了两句话:“X没偷,X偷了”,故不论该人是否说谎,他提到的两人中必有一人是小偷。故在列条件表达式时,可以不关心谁说谎,谁说实话。这样,可以列出下列条件表达式:甲说:”乙没有偷,是丁偷的。”B+D=1乙说:“我没有偷,是丙偷有。”B+C=1丙说:“甲没有偷,是乙偷的。”A+B=1丁说:“我没有偷。”A+B+C+D=1其中丁只说了一句话,无法判定其真假,表达式反映了四人中仅有一名是窃贼的条件。*程序说明与注释#includeintmain

3、(){inti,j,a[4];for(i=0;i<4;i++)/*假定只有第i个人为窃贼*/{for(j=0;j<4;j++)/*将第i个人设置为1表示窃贼,其余为0*/if(j==i)a[j]=1;elsea[j]=0;if(a[3]+a[1]==1&&a[1]+a[2]==1&&a[0]+a[1]==1)/*判断条件是否成立*/{printf("Thethiefis");/*成立*/for(j=0;j<=3;j++)/*输出计算结果*/if(a[j])printf("%c.",j+'A');pri

4、ntf("");}}}*运行结果ThethiefisB.(乙为窃贼。)52.黑与白有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。五人对坐,每人都可以看到其它人额头上的纸的颜色。五人相互观察后,A说:“我看见有三人额头上帖的是白纸,一人额头上帖的是黑纸。”B说:“我看见其它四人额头上帖的都是黑纸。”C说:“我看见一人额头上帖的是白纸,其它三人额头上帖的是黑纸。”D说:“我看见四人额头上帖的都是白纸。”E什么也没说。现在已知额头上帖黑纸的人说的都是谎话,额头帖白纸的人说的都是实话。问这五人

5、谁的额头是帖白纸,谁的额头是帖黑纸?*问题分析与算法设计假如变量A、B、C、D、E表示每个人额头上所帖纸的颜色,0代表是黑色,1代表是白色。根据题目中A、B、C、D四人所说的话可以总结出下列关系:A说:a&&b+c+d+e==3

6、

7、!a&&b+c+d+e!=3B说:b&&a+c+d+e==0

8、

9、!b&&a+c+d+e!=0C说:c&&a+b+d+e==1

10、

11、!c&&a+b+d+e!=1D说:d&&a+b+c+e==4

12、

13、!d&&a+b+c+e!=4穷举每个人额头所帖纸的颜色的所有可能的情况,代入*程序

14、说明与注释#includeintmain(){inta,b,c,d,e;for(a=0;a<=1;a++)/*黑色:0白色:1*/for(b=0;b<=1;b++)/*穷举五个人额头帖纸的全部可能*/for(c=0;c<=1;c++)for(d=0;d<=1;d++)for(e=0;e<=1;e++)if((a&&b+c+d+e==3

15、

16、!a&&b+c+d+e!=3)&&(b&&a+c+d+e==0

17、

18、!b&&a+c+d+e!=0)&&(c&&a+b+d+e==1

19、

20、!c&&a+b+

21、d+e!=1)&&(d&&a+b+c+e==4

22、

23、!d&&a+b+c+e!=4)){printf("Aispastedapieceof%spaperonhisforehead.",a?"white":"black");printf("Bispastedapieceof%spaperonhisforehead.",b?"white":"black");printf("Cispastedapieceof%spaperonhisforehead.",c?"white":"black");prin

24、tf("Dispastedapieceof%spaperonhisforehead.",d?"white":"black");printf("Eispastedapieceof%spaperonhisforehead.",e?"white":"black");}}*运行结果Aispastedapaperofblackpaperonhisforehead.(黑)Bispastedapaperofblackpaperonhisforehead.(黑)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。