




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章逻辑思维与计算机解题(续),2,例3-3求10!,/*/*程序名:3_3.cpp(循环语句示例)*/*作者:wuwh*/*编制时间:2002年9月20日*/*主要功能:计算10的阶乘*/*#include/预编译命令voidmain()/主函数/主函数开始inti=0,j=0,k=0;/声明i,j,k为整型变量,并初始化为0longsum=1;/声明sum为长整型变量,并初始化为1for(i=10;i=1;i=i-1)/用for循环作累乘运算couti=i;/显示isum=sum*i;/每一步乘积couttsum=sumendl;/显示每一步乘积for(j=1;j=5500;j=j+1)/用for循环延迟时间for(k=1;k=10000;k=k+1);/用for循环延迟时间cout10!=sum=1;i=i-1)couti=i;sum=sum*i;couttsum=sumendl;for(j=1;j=5500;j=j+1)for(k=1;k=10000;k=k+1);cout10!=sum=1;表达式3为i=i-1;,8,for循环的NS图为了以后讲解的方便,有必要使用更为简便的N-S结构流程图,如图3.3,图3.3,9,if(sum=3)coutThismanischar(64+k)0)/如果x0,将1赋给yy=1;elseif(x=0)/如果x=0,将0赋给yy=0;elsey=-1;/否则(x0),将-1赋给ycout当x=x时,y=yendl;/输出x,y的值/主函数结束,15,NS图,图3.6,16,NS图,有了上述了解之后,我们来看解“谁做的好事”的程序框图,图3.7,17,现在我们来分析“谁做的好事”的NS流程图。它是由两大块组成的,如图3.8,图3.8,第一块循环结构,第二块分支结构,18,第一块是循环结构,功能是产生被试对象,依次为A、B、C、D。并测试四句话有多少句为真,如有3句为真,则可确定做好事者,同时置有解标志为1。第二块为分支结构,功能是判断是否无解,如为真,则输出无解信息。这是粗看。再往细看,第一块的循环体又由两块组成,如图3.9,中含两条赋值语句中含一条分支语句,19,我们讲这一段是希望你掌握NS图,这对今后的学习会有好处。按照程序框图很容易写出程序(如下页所示),thisman=64+k;sum=(thisman!=A)+(thisman=C)+(thisman=D)+(thisman!=D);,图3.9,sum=3,真,假,输出该被测试者;有解标志置1;,20,/*/*程序名:3_5.cpp*/*作者:wuwh*/*编制时间:2001年8月*/*主要功能:谁做的好事*/*#include/预编译命令voidmain()/主函数/主函数开始intk=0,sum=0,g=0;/声明变量为整数类型,且均初始化为0charthisman=;for(k=1;k=4;k=k+1)/k既是循环控制变量,也表示第k个人/for循环体开始thisman=64+k;sum=(thisman!=A)+(thisman=C)+(thisman=D)+(thisman!=D);if(sum=3)/如果4句话有3句话为真,则输出该人/输出做好事者cout做好事者为char(64+k)endl;g=1;/有解标志置1/for循环体结束if(g!=1)/则输出无解信息coutCantfound!endl;/主函数结束,21,#includevoidmain()intk=0,sum=0,g=0;charthisman=;for(k=1;k=4;k=k+1)thisman=64+k;sum=(thisman!=A)+(thisman=D)+(thisman=C)+(thisman!=D);if(sum=3)cout做好事者为char(64+k)endl;g=1;if(g!=1)coutCantfound!endl;,22,/*/*程序名:3_6.cpp*/*作者:wuwh*/*编制时间:2001年8月*/*主要功能:谁做的好事*/*#include/预编译命令voidmain()/主函数/主函数开始intk=0,sum=0,g=0;/声明变量为整数类型,且均初始化为0for(k=1;k=4;k=k+1)/循环从k为1到4,sum=0;/循环体内的初始化if(k!=1)sum=sum+1;/如A的话为真,则让sum加1;if(k=3)sum=sum+1;/如B的话为真,则让sum加1;if(k=4)sum=sum+1;/如C的话为真,则让sum加1;if(k!=4)sum=sum+1;/如D的话为真,则让sum加1;if(sum=3)/若有三句话为真,则做下列两件事coutThismanischar(64+k)endl;/输出做好事者g=1;/让有解标志置1if(g!=1)/则输出无解信息coutCantfound!endl;/主函数结束,23,for(k=1;k=4;k=k+1)sum=0;if(k!=1)sum=sum+1;/如A的话为真,则让sum加1;if(k=3)sum=sum+1;/如B的话为真,则让sum加1;if(k=4)sum=sum+1;/如C的话为真,则让sum加1;if(k!=4)sum=sum+1;/如D的话为真,则让sum加1;.,24,/*/*程序名:3_7.cpp*/*作者:wuwh*/*编制时间:2001年8月*/*主要功能:谁做的好事*/*#include/预编译命令voidmain()/主函数/主函数开始intk=0,g=0;/声明变量为整数类型,且均初始化为0for(k=1;k=4;k=k+1)/k既是循环控制变量,也表示第k个人/for循环体开始if(k!=1)+(k=3)+(k=4)+(k!=4)=3)/如果4句话有3句话为真,则输出该人/输出做好事者cout做好事者为char(64+k)endl;g=1;/有解标志置1/for循环体结束if(g!=1)/则输出无解信息coutCantfound!endl;/主函数结束,上述程序可以简化为:,25,for(k=1;k=4;k=k+1)if(k!=1)+(k=3)+(k=4)+(k!=4)=3)cout做好事者为char(64+k)endl;g=1;,26,for(k=1;k=4;k=k+1)if(k!=1)+(k=3)+(k=4)+(k!=4)=3)cout“做好事者为”char(64+k)endl;g=1;,第四章逻辑判断与解题思路,28,某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:A、B至少有一人作案;A、E、F三人中至少有两人参与作案;A、D不可能是同案犯;B、C或同时作案,或与本案无关;C、D中有且仅有一人作案;如果D没有参与作案,则E也不可能参与作案。试编一程序,将作案人找出来。,逻辑表达式,29,1、逻辑与,运算符为A=1;A=A+1)for(B=0;B=1;B=B+1)for(C=0;C=1;C=C+1)for(D=0;D=1;D=D+1)for(E=0;E=1;E=E+1)for(F=0;F=1;F=F+1)coutABCDEFendl;,48,for(F=0;F=1;F=F+1)coutABCDEFendl;循环体,49,for(E=0;E=1;E=E+1)for(F=0;F=1;F=F+1)coutABCDEFendl;循环体,50,for(D=0;D=1;D=D+1)for(E=0;E=1;E=E+1)for(F=0;F=1;F=F+1)coutABCDEFendl;循环体,51,for(A=0;A=1;A=A+1)for(B=0;B=1;B=B+1)循for(C=0;C=1;C=C+1)环for(D=0;D=1;D=D+1)体for(E=0;E=1;E=E+1)for(F=0;F=1;F=F+1)coutABCDEFendl;,52,53,为了给出每个人是否为罪犯的信息,程序中定义了一个二维数组。charinfo29=“不是罪犯”,“是罪犯”;,有两个字串,每串最多有91个英文字符,info为数组名,54,char是说,info数组的元素为字符,2为下标,表示有两个字符串,每个字符串最多有91个字符。因为英文字符占一个字节,而汉字占两个字节,故四个汉字要占8个英文字符的地方。每一字串后面自动跟一个空字符0因此可以看出:第0号字符串info0的内容为“不是罪犯”。第1号字符串info1的内容为“是罪犯”。,55,在输出时用cout“A:”infoAendl;如果A为0,则输出A:不是罪犯如果A为1,则输出A:是罪犯参考程序4_1.cpp(案情分析),56,/*/*程序名:3_4.cpp*/*作者:wuwh*/*编制时间:2001年8月*/*主要功能:案情分析*/*#includevoidmain(void)/案情分析/A和B至少有一人作案;cc1=(A|B)/A和D不可能是同案犯;cc2=(A/定义二维数组,给出是否罪犯信息,57,for(A=0;A=1;A=A+1)/枚举Afor(B=0;B=1;B=B+1)/枚举Bfor(C=0;C=1;C=C+1)/枚举Cfor(D=0;D=1;D=D+1)/枚举Dfor(E=0;E=1;E=E+1)/枚举Efor(F=0;F=1;F=F+1)/枚举Fcc1=A|B;cc2=!(A,58,/测试6句话都为真时,才输出谁是罪犯if(cc1+cc2+cc3+cc4+cc5+cc6=6)/输出判断结果coutA:infoAendl;coutB:infoBendl;coutC:infoCendl;coutD:infoDendl;coutE:infoEendl;coutF:infoFendl;/输出结束/循环结束,59,讨论,60,大家参与讨论的题,五位跳水高手将参加十米高台跳水决赛,有好事者让五个人据实力预测比赛结果。A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错,请编程解出比赛的实际名次。,61,思路:,1、首先是将五个人的预测写成逻辑表达式:让关系运算符“=”的含义是“是”。让数字1、2、3、4、5分别表示名次第一、第二,第五。让整型变量A、B、C、D、E分别表示每个选手所得名次。A选手说:B=2,A=3;B选手说:B=2,E=4;C选手说:C=1,D=2;D选手说:C=5,D=3;E选手说:E=4,A=1;,62,2、考虑到每个人说的话是一对一错,即一真一假,比如A说的(B=2)+(A=3)应该是11+0=10+1=1,63,我们可以归纳出要同时满足五个人所说的话都符合一半对一半错的条件是ta=(B=2)+(A=3)=1;符合A选手的话tb=(B=2)+(E=4)=1;符合B选手的话tc=(C=1)+(D=2)=1;符合C选手的话td=(C=5)+(D=3)=1;符合D选手的话te=(E=4)+(A=1)=1;符合E选手的话因为ta,tb,te非1即0,五个条件值都加在一起,64,ta的取值是0或1ta的取值取决于下列关系(B=2)+(A=3)=1B=2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电竞公司销售渠道管理规章
- 电竞公司档案管理办法
- 电竞公司成本核算管理细则
- 专利行业专利检索与分析方案
- 中级银行从业资格之中级银行业法律法规与综合能力能力检测试卷带答案详解(考试直接用)
- 2026届福建省顺昌一中化学高一上期末综合测试试题含解析
- 三农人才培育工作方案指南
- 江西省恒立中学2026届高二化学第一学期期中调研模拟试题含解析
- 肩袖损伤修复新方法-洞察及研究
- 采购手册采购流程与供应商管理
- 2025至2030医学混合成像系统行业产业运行态势及投资规划深度研究报告
- 2025年内蒙古交通集团考试笔试试题(含答案)
- 低压安全隐患排查
- GB/T 9634.8-2018铁氧体磁心表面缺陷极限导则第8部分:PQ型磁心
- GB/T 27749-2011绝缘漆耐热性试验规程电气强度法
- 金风风电Vensys变桨系统课件
- 【高校辅导员资料】高校辅导员理论与实务
- 工程项目成本核算制度
- um-joyo c2001跨平台监控防误一体化系统使用说明书
- 中央供料系统介绍
- 输液泵/微量注射泵使用技术操作考核评分标准
评论
0/150
提交评论