版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上第4章 习题解析-逻辑思维13个人比饭量大,每个人说了两句话。 A说:B比我吃得多,C和我吃得一样多。 B说:A比我吃得多,A也比C吃得多。 C说:我比B吃得多,B比A吃得多。 事实上饭量越小的人讲对的话越多。请编程按饭量的大小输出3个人的顺序。 算法分析: 1)把每个人的饭量分别用整数1,2,3来表示,数字越大就表示这个人的饭量越大,由于题目中A说的话中提到了有可能两个人的饭量相同,也就是说代表3个人饭量的数字有可能相等。2)用一个三重循环来枚举每个人的饭量,分别用A,B,C表示这3个人的饭量。将这3个人说的话As,Bs,Cs写成表达式: As=(BA)+(C=A)
2、; Bs=(AB)+(AC); Cs=(CB)+(BA);3)根据题意,饭量越小的人讲对的话越多,也就是说,不存在两个人,其中一个人的饭量比另一个人小,且说对的话不比另一个人多。当变量满足这个条件时,就可以输出这组解了。 #include / 4-1-饭量比较参考程序 int main( ) int A,B,C,as,bs,cs; /定义3个变量,分别表示3个人 for (A=1;A=3;A+) / 枚举A for (B=1;B=3;B+) / 枚举B for (C=1;CA)+(C=A); bs=(AB)+(AC); cs=(CB)+(BA); if (!(A=B)&(as=bs)|(A=C
3、)&(as=cs) |(B=C)&(bs=cs)|(B=A)&(bs=as) |(C=A)&(cs=as)|(C=B)&(cs=bs) cout A= A endl; cout B= B endl; cout C= C endl; /输出结束 /循环结束 return 0; 输出结果:A=3 B=1 C=224名专家对4款赛车进行评论A说:2号赛车是最好的。 B说:4号赛车是最好的。 C说:3号不是最佳赛车。 D说:B说错了。 事实上:只有一款赛车最佳,且只有一名专家说对了,其他3人都说错了。请编程输出最佳车的车号,以及哪位专家说对了。 算法分析 根据题意,只有一款赛车最佳。这就有4种情况,可
4、以枚举这4种情况,采用循环结构,令变量为BestCar,取4个可能的车号。 将A,B,C,D说的话与BestCar联系起来,有As=(BcstCar=2);Bs=(BestCar=4);Cs=(BestCar!3);Ds=(BestCar!4);根据题意,只有一名专家说对,因此在程序中使用如下的判定条件:if (As+Bs+Cs+Ds=1)即可判定BestCar的取值,就是最佳车号,同时再测试As,Bs,Cs,Ds哪个取值为1,就输出该专家。 #include / 4-2, 最佳汽车参考程序 int main( ) int car,as,bs,cs,ds; for (car=1;car=4;c
5、ar+) / 枚举每款汽车 as=(car=2); bs=(car=4); cs=(car!=3); ds=!bs; if (as+bs+cs+ds=1) cout car car endl; if (as=1) cout A endl; if (bs=1) cout B endl; if (cs=1) cout C endl; if (ds=1) cout D endl; /输出结束 /循环结束 return 0; 输出结果:car 3 , 4号专家说对了 35位跳水高手参加10m高台跳水决赛,有好事者让5人据实力预测比赛结果。 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手
6、说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错。请编程解出比赛实际名次。算法分析: 用变量A,B,C,D,E表示5个选手的排名,取值在l,2,3,4,5。 枚举每个选手的名次,这可以通过一个五重循环来实现。根据题意,每个人说的话可以写成如下形式:As=(B=2)+(A=3);Bs=(B=2)+(E=4);Cs=(C=1)+(D=2);Ds=(C=5)+(D=3);Es=(E=4)+(A=1);由于每个人只说对了一句话,即判定条件为:if(As=1&Bs=1&Cs=1&Ds=1&Es=1)每个人名次不同:A
7、BCDE这样就可以判定出每个选手的名次了,然后再按排名顺序输出即可。 #include / 习题4.3-跳水名次 int main( ) int A,B,C,D,E,ta,tb,tc,td,te; for (A=1;A=5;A+) / 枚举A for (B=1;B=5;B+) / 枚举B for (C=1;C=5;C+) / 枚举C for (D=1;D=5;D+) / 枚举D for (E=1;E=5;E+) / 枚举E ta=(B=2)+(A=3); tb=(B=2)+(E=4); tc=(C=1)+(D=2); td=(C=5)+(D=3); te=(E=4)+(A=1); if(ta=
8、1)&(tb=1)&(tc=1)&(td=1)&(te=1)& (A!=B)&(A!=C)&(A!=D)&(A!=E) &(B!=A)&(B!=C)&(B!=D)&(B!=E) &(C!=A)&(C!=B)&(C!=D)&(C!=E) &(D!=A)&(D!=B)&(D!=C)&(D!=E) &(E!=A)&(E!=B)&(E!=C)&(D!=E) /输出判断结果 cout A= A endl; cout B= B endl; 21 cout C= C endl; 22 cout D= D endl; 23 cout E= E endl; 24 25 / 循环结束26 return 0;27
9、输出结果 A=3 B=2 C=5 D=2 E=44我国有4大淡水湖。A说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。C说:洪泽湖最小,洞庭湖第:。D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。4个人每个人仅答对了一个,请编程给出4个湖大小。算法分析:1)用汉语拼音表示4个湖名:洞庭湖:Dongting 洪泽湖: Hongze 鄱阳湖: Poyang 太湖: Tai2)令湖的大小依次为1,2,3,4。1 表示最大,4表示最小。3)将4个人说的话写成表达式: As=(Dongting=1)+(Hongze=4)+(Poyang=3);Bs=(Ho
10、ngze=1)+(Dongting=4)+(Poyang=2)+(Tai=3);Cs=(Hongzc=4)+(Dongting=3);Ds=(Poyang=1)+(Tai=4)+(Hongze=2)+(Dongting=3);4)用1,2,3,4去枚举每个湖的大小,可以通过四重循环来实现。题目说4个人每个人只答对了一句,也就是说程序中的判定条件为: if (As=1&Bs=1&Cs=1&Ds=1) 这样就可以确定4个湖的大小了,随后按照从大到小的顺序输出这4个湖。 输出结果: 鄱阳湖1, 洞庭湖2 太湖3 洪泽湖4参考程序:#include using namespace std;int main() / 主函数 int d,h,p,t,as,bs,cs,ds;for (d=1;d=4;d+) for (h=1;h=4;h+) for (p=1;p=4;p+) for (t=1;t=4;t+) as=(d=1)+(h=4)+(p=3); bs=(h=1)+(d=4)+(p=2)+(t=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《报关单填写规范》课件
- 2024年鸟类生态教学:5搭船的鸟课件详解
- 探索2024年:折叠筷子在课堂教学中的应用
- 人教部编版初中语文文言文实词虚词总结
- 2018年国家保安员资格考试复习题及答案
- 早期胃癌内镜诊治
- 2zemax光学教程:2024年掌握核心技能
- 顶管工程施工方案方案
- 昏迷的护理常规
- 面向2024年新趋势的安全用电培训课件
- 美国营养标签标示成分
- 客服话术大全-
- 干果加工项目建议书范文
- 护理核心制度督查表20179
- 红色古色绿色文化教育活动策划方案
- 《正交分解法》导学案
- 建筑材料知识点汇总
- 小学五年级上学期家长会课件.ppt
- 平面构成作品欣赏
- 英语管道专业术语
- 社会工作毕业论文(优秀范文8篇)
评论
0/150
提交评论