逻辑思维与计算机解题续.ppt
《逻辑思维与计算机解题续.ppt》由会员分享,可在线阅读,更多相关《逻辑思维与计算机解题续.ppt(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 三三 章章 逻辑思维与计算机解题逻辑思维与计算机解题(续)(续)例例 3-3 求求10!/*/*程序名:程序名:3_3.cpp(循环语句示例)(循环语句示例)*/*作作 者:者:wuwh */*编制时间:编制时间:2002年年9月月20日日 */*主要功能:计算主要功能:计算10 的阶乘的阶乘 */*#include /预编译命令预编译命令void main()/主函数主函数 /主函数开始主函数开始int i=0,j=0,k=0;/声明声明 i,j,k 为整型变量,并初始化为为整型变量,并初始化为0long sum=1;/声明声明 sum 为长整型变量,并初始化为为长整型变量,并初始化为
2、1for(i=10;i=1;i=i-1)/用用 for 循环作累乘运算循环作累乘运算cout i=i;/显示显示isum=sum*i;/每一步乘积每一步乘积cout tsum=sum endl;/显示每一步乘积显示每一步乘积for(j=1;j=5500;j=j+1)/用用 for 循环延迟时间循环延迟时间for(k=1;k=10000;k=k+1);/用用 for 循环延迟时间循环延迟时间 cout 10!=sum endl;/显示运算结果显示运算结果 /主函数结束主函数结束2#include void main()int i=0,j=0,k=0;long sum=1;for(i=10;i=1
3、;i=i-1)cout i=i;sum=sum*i;cout tsum=sum endl;for(j=1;j=5500;j=j+1)for(k=1;k=10000;k=k+1);cout 10!=sum=1i=1;表达式表达式表达式表达式3 3 为为为为 i=i-1i=i-1;7for循环的循环的NS图图为了以后讲解的方便,有必要使用更为简为了以后讲解的方便,有必要使用更为简便的便的N-S结构流程图,如图结构流程图,如图3.3for(i=1;i=100;i=i+1)循环体循环体图图图图3.33.38if(sum=3)if(sum=3)coutcout This man is char(64+k
4、)This man is char(64+k)endlendl;g=1;g=1;这一段程序可以读作:如果这一段程序可以读作:如果这一段程序可以读作:如果这一段程序可以读作:如果sumsum真的为真的为真的为真的为 3 3 时,做下面时,做下面时,做下面时,做下面两件事两件事两件事两件事(1 1)输出做好事的人;)输出做好事的人;)输出做好事的人;)输出做好事的人;(2 2)将本题的有解标志置为)将本题的有解标志置为)将本题的有解标志置为)将本题的有解标志置为 1 1。其中其中其中其中(sum=3)(sum=3)为条件判断语句中的条件,根据其真为条件判断语句中的条件,根据其真为条件判断语句中的条
5、件,根据其真为条件判断语句中的条件,根据其真假使程序分支。假使程序分支。假使程序分支。假使程序分支。例例 3-1 的解要用到的解要用到分支语句分支语句,即需要判断当四句,即需要判断当四句话中有话中有 3 句为真时,我们要将该人判定为做好事者。句为真时,我们要将该人判定为做好事者。请看如下程序段请看如下程序段9下面我们画出分支程序的下面我们画出分支程序的NSNS流程图,流程图,这种图直观清晰,一目了然。这种图直观清晰,一目了然。图图图图3.43.4103.if(表达式表达式)语句语句 1;else 语句语句 2;如果表达式为真,执行语句如果表达式为真,执行语句1;否则执行语句;否则执行语句24.
6、if(表达式表达式)语句块语句块 1;else语句块语句块 2;11一般格式一般格式1.if (if (表达式表达式表达式表达式)语句语句语句语句 1 1;如果表达式为真,执行语句如果表达式为真,执行语句如果表达式为真,执行语句如果表达式为真,执行语句 1 1;否则什么都不做;否则什么都不做;否则什么都不做;否则什么都不做.2.if(if(表达式表达式表达式表达式)语句块语句块语句块语句块 1 1;如果表达式为真,做语句块如果表达式为真,做语句块如果表达式为真,做语句块如果表达式为真,做语句块 1 1 的内容;否则什么都不做;的内容;否则什么都不做;的内容;否则什么都不做;的内容;否则什么都不
7、做;12举例:实现如图函数举例:实现如图函数图图图图3.53.513/*/*/*/*程程程程 序序序序 名:名:名:名:3_4.cpp3_4.cpp(分支程序示例)(分支程序示例)(分支程序示例)(分支程序示例)*/*/*作作作作 者:者:者:者:wuwhwuwh */*/*编制时间:编制时间:编制时间:编制时间:20012001年年年年8 8月月月月 */*/*主要功能:实现符号函数主要功能:实现符号函数主要功能:实现符号函数主要功能:实现符号函数 */*/*#include#include /预编译命令预编译命令预编译命令预编译命令void main()void main()/主函数主函数
8、主函数主函数 /主函数开始主函数开始主函数开始主函数开始intint x=0,y=0;x=0,y=0;/声明声明声明声明x x,y y为整型变量,并初始化为为整型变量,并初始化为为整型变量,并初始化为为整型变量,并初始化为0 0coutcout 请输入请输入请输入请输入x x x;x;/从键盘输入整数送至从键盘输入整数送至从键盘输入整数送至从键盘输入整数送至x x中中中中if(x0)if(x0)/如果如果如果如果x x00,将,将,将,将1 1赋给赋给赋给赋给y yy=1;y=1;elseelseif(x=0)if(x=0)/如果如果如果如果x x=0=0,将,将,将,将0 0赋给赋给赋给赋给
9、y yy=0;y=0;elseelsey=-1;y=-1;/否则(否则(否则(否则(x x00),将),将),将),将-1-1赋给赋给赋给赋给y ycoutcout 当当当当x=x x=x 时时时时,y=,y=y y endlendl;/输出输出输出输出x x,y y的值的值的值的值 /主函数结束主函数结束主函数结束主函数结束14NSNS图图图图图图3.63.615NSNS图图有了上述了解之后,我们来看解有了上述了解之后,我们来看解“谁做的好事谁做的好事”的程序框图的程序框图图图图图3.73.716现在我们来分析现在我们来分析“谁做的好事谁做的好事”的的NS流程图。流程图。它是由两大块组成的,
10、如图它是由两大块组成的,如图3.8循环体循环体for(k=1;k=4;k+)语句语句1;1;图图图图3.83.8第一块第一块循环结构循环结构第二块第二块分支结构分支结构17 第一块是第一块是循环结构循环结构,功能是产生被试对,功能是产生被试对象,依次为象,依次为A、B、C、D。并测试四句话有多。并测试四句话有多少句为真,如有少句为真,如有3句为真,则可确定做好事者,句为真,则可确定做好事者,同时置有解标志为同时置有解标志为1。第二块为第二块为分支结构分支结构,功能是判断是否无,功能是判断是否无解,如为真,则输出无解信息。解,如为真,则输出无解信息。这是粗看。再往细看,第一块的循环体这是粗看。再
11、往细看,第一块的循环体又由两块组成,如图又由两块组成,如图3.9,中含两条赋值语句中含两条赋值语句中含一条分支语句中含一条分支语句18我们讲这一段是希望你掌握我们讲这一段是希望你掌握NS图,这对今后图,这对今后的学习会有好处。按照程序框图很容易写出程序的学习会有好处。按照程序框图很容易写出程序(如下页所示)(如下页所示)thisman=64+k;sum=(thisman!=A)+(thisman=C)+(thisman=D)+(thisman!=D);图图图图3.93.9sum=3真真假假输出该被测试者;输出该被测试者;有解标志置有解标志置1 1;19/*/*/*/*程程程程 序序序序 名:名
12、:名:名:3_5.cpp *3_5.cpp */*/*作作作作 者:者:者:者:wuwhwuwh */*/*编制时间:编制时间:编制时间:编制时间:20012001年年年年8 8月月月月 */*/*主要功能:谁做的好事主要功能:谁做的好事主要功能:谁做的好事主要功能:谁做的好事 */*/*#include#include /预编译命令预编译命令预编译命令预编译命令void main()void main()/主函数主函数主函数主函数 /主函数开始主函数开始主函数开始主函数开始intint k=0,sum=0,g=0;k=0,sum=0,g=0;/声明变量为整数类型,且均初始化为声明变量为整数类
13、型,且均初始化为声明变量为整数类型,且均初始化为声明变量为整数类型,且均初始化为0 0char char thismanthisman=;=;for(k=1;k=4;k=k+1)for(k=1;k=4;k=k+1)/k /k既是循环控制变量,也表示第既是循环控制变量,也表示第既是循环控制变量,也表示第既是循环控制变量,也表示第k k个人个人个人个人 /for /for 循环体开始循环体开始循环体开始循环体开始thismanthisman=64+k;=64+k;sum=(sum=(thismanthisman!=A)!=A)+(+(thismanthisman=C)=C)+(+(thismant
14、hisman=D)=D)+(+(thismanthisman!=D);!=D);if(sum=3)if(sum=3)/如果如果如果如果4 4句话有句话有句话有句话有3 3句话为真,则输出该人句话为真,则输出该人句话为真,则输出该人句话为真,则输出该人/输出做好事者输出做好事者输出做好事者输出做好事者coutcout 做好事者为做好事者为做好事者为做好事者为 char(64+k)char(64+k)endlendl;g=1;g=1;/有解标志置有解标志置有解标志置有解标志置1 1 /for /for 循环体结束循环体结束循环体结束循环体结束if(g!=1)if(g!=1)/则输出无解信息则输出无
15、解信息则输出无解信息则输出无解信息 coutcout Cant found!Cant found!endlendl;/主函数结束主函数结束主函数结束主函数结束20#include#include void main()void main()intint k=0,sum=0,g=0;char k=0,sum=0,g=0;char thismanthisman=;=;for(k=1;k=4;k=k+1)for(k=1;k=4;k=k+1)thismanthisman=64+k;=64+k;sum=(sum=(thismanthisman!=A)+(!=A)+(thismanthisman=D)=D
16、)+(+(thismanthisman=C)+(=C)+(thismanthisman!=D);!=D);if (if (sum=3sum=3)coutcout 做好事者为做好事者为做好事者为做好事者为 char(64+k)char(64+k)endlendl;g=1;g=1;if(g!=1)if(g!=1)coutcout Cant found!Cant found!endlendl;21/*/*/*/*程程程程 序序序序 名:名:名:名:3_6.cpp *3_6.cpp */*/*作作作作 者:者:者:者:wuwhwuwh */*/*编制时间:编制时间:编制时间:编制时间:20012001
17、年年年年8 8月月月月 */*/*主要功能:谁做的好事主要功能:谁做的好事主要功能:谁做的好事主要功能:谁做的好事 */*/*#include#include /预编译命令预编译命令预编译命令预编译命令void main()void main()/主函数主函数主函数主函数 /主函数开始主函数开始主函数开始主函数开始intint k=0,sum=0,g=0;k=0,sum=0,g=0;/声明变量为整数类型,且均初始化为声明变量为整数类型,且均初始化为声明变量为整数类型,且均初始化为声明变量为整数类型,且均初始化为0 0for(k=1;k=4;k=k+1)for(k=1;k=4;k=k+1)/循环
18、从循环从循环从循环从k k为为为为1 1到到到到4 4,sum=0;sum=0;/循环体内的初始化循环体内的初始化循环体内的初始化循环体内的初始化if(k!=1)sum=sum+1;/if(k!=1)sum=sum+1;/如如如如A A的话为真,则让的话为真,则让的话为真,则让的话为真,则让sumsum加加加加1 1;if(k=3)sum=sum+1;/if(k=3)sum=sum+1;/如如如如B B的话为真,则让的话为真,则让的话为真,则让的话为真,则让sumsum加加加加1 1;if(k=4)sum=sum+1;/if(k=4)sum=sum+1;/如如如如C C的话为真,则让的话为真,
19、则让的话为真,则让的话为真,则让sumsum加加加加1 1;if(k!=4)sum=sum+1;/if(k!=4)sum=sum+1;/如如如如D D的话为真,则让的话为真,则让的话为真,则让的话为真,则让sumsum加加加加1 1;if(sum=3)if(sum=3)/若有三句话为真,则做下列两件事若有三句话为真,则做下列两件事若有三句话为真,则做下列两件事若有三句话为真,则做下列两件事 coutcout This man is char(64+k)This man is char(64+k)endlendl;/输出做好事者输出做好事者输出做好事者输出做好事者g=1;g=1;/让有解标志置让
20、有解标志置让有解标志置让有解标志置1 1 if(g!=1)if(g!=1)/则输出无解信息则输出无解信息则输出无解信息则输出无解信息 coutcout Cant found!Cant found!endlendl;/主函数结束主函数结束主函数结束主函数结束22for(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;/
21、如如D的话为真,则让的话为真,则让sum加加1;.23/*/*/*/*程程程程 序序序序 名:名:名:名:3_7.cpp *3_7.cpp */*/*作作作作 者:者:者:者:wuwhwuwh */*/*编制时间:编制时间:编制时间:编制时间:20012001年年年年8 8月月月月 */*/*主要功能:谁做的好事主要功能:谁做的好事主要功能:谁做的好事主要功能:谁做的好事 */*/*#include#include /预编译命令预编译命令预编译命令预编译命令void main()void main()/主函数主函数主函数主函数 /主函数开始主函数开始主函数开始主函数开始intint k=0,g
22、=0;k=0,g=0;/声明变量为整数类型,且均初始化为声明变量为整数类型,且均初始化为声明变量为整数类型,且均初始化为声明变量为整数类型,且均初始化为0 0for(k=1;k=4;k=k+1)/kfor(k=1;k=4;k=k+1)/k既是循环控制变量,也表示第既是循环控制变量,也表示第既是循环控制变量,也表示第既是循环控制变量,也表示第k k个人个人个人个人 /for /for 循环体开始循环体开始循环体开始循环体开始if(k!=1)+(k=3)+(k=4)+(k!=4)=3)if(k!=1)+(k=3)+(k=4)+(k!=4)=3)/如果如果如果如果4 4句话有句话有句话有句话有3 3
23、句话为真,则输出该人句话为真,则输出该人句话为真,则输出该人句话为真,则输出该人/输出做好事者输出做好事者输出做好事者输出做好事者coutcout 做好事者为做好事者为做好事者为做好事者为 char(64+k)char(64+k)endlendl;g=1;g=1;/有解标志置有解标志置有解标志置有解标志置1 1 /for /for 循环体结束循环体结束循环体结束循环体结束if(g!=1)if(g!=1)/则输出无解信息则输出无解信息则输出无解信息则输出无解信息 coutcout Cant found!Cant found!endlendl;/主函数结束主函数结束主函数结束主函数结束上述程序可以
24、简化为:上述程序可以简化为:上述程序可以简化为:上述程序可以简化为:24for(k=1;k=4;k=k+1)if(k!=1)+(k=3)+(k=4)+(k!=4)=3)cout 做好事者为做好事者为 char(64+k)endl;g=1;25 for(k=1;k=4;k=k+1)for(k=1;k=4;k=k+1)if(if(k!=1)(k!=1)+(k=3)(k=3)+(k=4)(k=4)+(k!=4)(k!=4)=3)=3)coutcout“做好事者为做好事者为做好事者为做好事者为”char(64+k)char(64+k)endlendl;g=1;g=1;26第第 四四 章章 逻辑判断与解
25、题思路逻辑判断与解题思路某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:A A、B B 至少有一人作案;至少有一人作案;至少有一人作案;至少有一人作案;A A、E E、F F 三人中至少有两人参与作案;三人中至少有两人参与作案;三人中至少有两人参与作案;三人中至少有两人参与作案;A A、D D 不可能是同案犯;不可能是同案犯;不可能是同案犯;不可能是同案犯;B B、C C 或同时作案,或与本案无关;或同时作案,或与本案无关;或同时作案,或与本案无关;或
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 逻辑思维 计算机 解题
限制150内