逻辑思维与计算机解题.ppt

逻辑思维与计算机解题.ppt

ID:52526722

大小:307.06 KB

页数:56页

时间:2020-04-09

逻辑思维与计算机解题.ppt_第1页
逻辑思维与计算机解题.ppt_第2页
逻辑思维与计算机解题.ppt_第3页
逻辑思维与计算机解题.ppt_第4页
逻辑思维与计算机解题.ppt_第5页
资源描述:

《逻辑思维与计算机解题.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、逻辑思维与计算机解题1将实际问题抽象为逻辑关系枚举法解题思路关系与关系表达式程序的循环结构与分支结构学习目标2关系运算符与关系表达式人的思维到用计算机语言的表示枚举的概念与思路循环结构分支结构内容要点3计算机强大的逻辑分析功能是由人通过程序赋给它的。一些逻辑问题必须转换成计算机能够看得懂的数学表达式和一定的程序指令。这一章我们通过例子来介绍如何将人对问题的思考转换为让计算机能解的数学表达式,同时给出一些通常要用到的程序结构和C/C++语句。4清华附中有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位

2、是谁做的好事。A说:不是我。B说:是C。C说:是D。D说:他胡说。已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。【例1】“谁做的好事”5为了解这道题,我们需要学习如何通过逻辑思维与判断解这类问题的思路。6将四个人说的四句话写成关系表达式。在声明变量时,我们让thisman表示要寻找的做了好事的人,定义它是字符变量。charthisman=‘’;//定义字符变量并将其初始化为空让“==”的含义为“是”,让“!=”的含义为“不是”。7利用关系表达式将四个人所说的话表示成说话人说的话写成

3、关系表达式A“不是我”thisman!=‘A’B“是C”thisman==‘C’C“是D”thisman==‘D’D“他胡说”thisman!=‘D’8A、B、C、D四个人,只有一位是做好事者。令做好事者为1,未做好事者为0,可以有如下4中状态(情况)枚举法的思路状态ABCD110002010030010400019这四种状态可简化写成状态赋值表达式1thisman=‘A’2thisman=‘B’3thisman=‘C’4thisman=‘D’显然第一种状态是假定A是做好事者,第二种状态是假定B是做好事者,…。所

4、谓枚举是按照这四种假定逐一地去测试四个人的话有几句是真话,如果不满足三句为真,就否定掉这一假定,换下一个状态再试。具体做法如下:10(1)假定让thisman=‘A’代入四句话中状态说的话关系表达式CAthisman!=‘A’;‘A’!=‘A’0Bthisman==‘C’;‘A’==‘C’0Cthisman==‘D’;‘A’==‘D’0Dthisman!=‘D’;‘A’!=‘D’1四个关系表达式的值的和为1,显然不是‘A’做的好事11(2)假定让thisman=‘B’代入四句话中状态说的话关系表达式CAthism

5、an!=‘A’;‘B’!=‘A’1Bthisman==‘C’;‘B’==‘C’0Cthisman==‘D’;‘B’==‘D’0Dthisman!=‘D’;‘B’!=‘D’1四个关系表达式的值的和为2,显然不是‘B’做的好事12(3)假定让thisman=‘C’代入四句话中状态说的话关系表达式CAthisman!=‘A’;‘C’!=‘A’1Bthisman==‘C’;‘C’==‘C’1Cthisman==‘D’;‘C’==‘D’0Dthisman!=‘D’;‘C’!=‘D’1四个关系表达式的值的和为3,就是‘C’做

6、的好事13综上所述一个人一个人去试,就是枚举。从编写程序看,实现枚举最好用循环结构。这部分的程序写出如下:for(k=1;k<=4;k=k+1)//计数型循环,循环的控制变量为k{thisman=64+k;//产生被试者,依次为’A’,’B’,’C’,’D’sum=(thisman!=’A’)//测试’A’的话是否为真+(thisman==’C’)//测试’B’的话是否为真+(thisman==’D’)//测试’C’的话是否为真+(thisman!=‘D’);//测试’D’的话是否为真…}14NS图有了上述了解之

7、后,我们来看解“谁做的好事”的程序框图图4.715#include//预编译命令usingnamespacestd;intmain()//主函数{//主函数开始intk=0,sum=0,g=0;//定义整型变量,均初始化为0charthisman='';//定义字符变量,初始化为空for(k=1;k<=4;k=k+1)//k是循环控制变量{//for循环体开始thisman=64+k;sum=(thisman!='A')+(thisman=='C')+(thisman=='D')+(thism

8、an!='D');if(sum==3){//如果3句话为真,则输出该人cout<<"做好事者为"<//预编译命令usingname

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

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

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