第4章程序设计基础.ppt
《第4章程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第4章程序设计基础.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 逻辑思维与计算机解题逻辑思维与计算机解题关系运算符与关系表达式关系运算符与关系表达式枚举的概念与思路枚举的概念与思路循环结构循环结构分支结构分支结构逻辑问题及其解法逻辑问题及其解法内内 容容 要要 点点 谁做的好事?谁做的好事?A 说:不是我。说:不是我。B 说:是说:是 C。C 说:是说:是 D。D 说:他胡说。说:他胡说。已知四个人中只有一个人做了好事,三个人说的是真话,已知四个人中只有一个人做了好事,三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事一个人说的是假话。现在要根据这些信息,找出做了好事的人。的人。【任务任务4.1】关系运算符有如下关系运算符有
2、如下6个:个:=大于等于大于等于 大于大于 =等于等于 =小于等于小于等于 小于小于 !=不等于不等于4.1 关系运算符和关系表达式关系运算符和关系表达式/*/*功 能:为理解关系运算而编制的小程序 */*时 间:2010年3月17日 */*#include using namespace std;int main()cout 23 2的逻辑值是的逻辑值是2)(3 2),1,1为真为真endl;cout=23=2的逻辑值是的逻辑值是=2)(3=2),1,1为真为真endl;cout3=23=2的逻辑值是的逻辑值是(3=2)(3=2),0,0为假为假endl;cout3 23 2的逻辑值是的逻辑
3、值是(3 2)(3 2),0,0为假为假endl;cout3=23=2的逻辑值是的逻辑值是(3=2)(3=2),0,0为假为假endl;cout3!=23!=2的逻辑值是的逻辑值是(3!=2)(3!=2),1,1为真为真endl;return 0;程序运行结果是:程序运行结果是:关系表达式的一般格式:关系运算符关系运算符 例如:表达式 b c 在程序中系统要测试由关系表达式所表示的关系是否成立,成立为真真(true),不成立为假假(false)。关系表达式是有值的,这个值非 0 即 1。关系表达式成立,其值为关系表达式成立,其值为 1;否则,其值为;否则,其值为 0。结合【任务4.1】,将四个
4、人说的四句话写成关系表达式:使用关系表达式解决问题:使用关系表达式解决问题:说话人说话人说的话说的话写成关系表达式写成关系表达式A“不是我不是我”thisman!=AB“是是C”thisman=CC“是是D”thisman=DD“他胡说他胡说”thisman!=Dchar thisman;char thisman;/thismanthisman 表示要寻找的做了好事的人表示要寻找的做了好事的人 /定义为字符变量定义为字符变量 在 C/C+中,字符在存储单元中是以 ASCII 码的形式存放的。因此,用赋值语句thisman=A;与thisman=65;两者是等效的,在以thisman为标识的存储
5、单元中存的是数字 65(41H)。/*/*功 能:验证A和65是否相等 */*时 间:2010年3月17日 */*#include using namespace std;int main()char thisman;char thisman;/声明字符变量 thismanthisman=A;thisman=A;/thisman赋值为Acout 65=A 65=A 关系表达式的值为关系表达式的值为 (65=A),1,1为真。为真。endl;return 0;结合【任务4.1】,A、B、C、D只有一位是做好事者。令做好事者为令做好事者为1,未做好事者为,未做好事者为0,可有如下 4 种状态(情况
6、):4.2 枚举的概念与思路枚举的概念与思路状态状态ABCD11000201003001040001这四种状态可简化写成:这四种状态可简化写成:状态赋值表达式1thisman=A2thisman=B3thisman=C4thisman=D 显然第一种状态是假定A是做好事者,第二种状态是假定B是做好事者,。所谓枚举枚举是按照四种假定逐一去测试四个人的话有几句是真话,如果不满足三句为真,就否定掉这一假定,换下一个状态再试。(1)将)将 thisman=A 代入四句话中代入四句话中说话人说的话关系表达式逻辑值Athisman!=A;A!=A0Bthisman=C;A=C0Cthisman=D;A=D
7、0Dthisman!=D;A!=D1四个关系表达式的值的和为四个关系表达式的值的和为1 1,显然不是,显然不是A做的好事。做的好事。(2)将)将 thisman=B 代入四句话中代入四句话中说话人说的话关系表达式逻辑值Athisman!=A;B!=A1Bthisman=C;B=C0Cthisman=D;B=D0Dthisman!=D;B!=D1四个关系表达式的值的和为四个关系表达式的值的和为2,显然不是,显然不是B做的好做的好事。事。(3)将)将 thisman=C 代入四句话中代入四句话中说话人说的话关系表达式逻辑值Athisman!=A;C!=A1Bthisman=C;C=C1Cthism
8、an=D;C=D0Dthisman!=D;C!=D1四个关系表达式的值的和为四个关系表达式的值的和为3,就是,就是C做的好事。做的好事。综上所述,一个人一个人地去试,就是综上所述,一个人一个人地去试,就是枚举枚举。从编写程序看,实现枚举最好用从编写程序看,实现枚举最好用循环结构循环结构。for(k=1;k=4;k=k+1)/计数型循环,循环的控制变量为k /循环体开始thisman=64+k;/产生被试者,依次为A,B,C,Dsum=(thisman!=A)/测试A的话是否为真 +(thisman=C)/测试B的话是否为真 +(thisman=D)/测试C的话是否为真 +(thisman!=D
9、);/测试D的话是否为真 /循环体结束4.3 循环结构循环结构for 是计数型循环的标识符,格式为:是计数型循环的标识符,格式为:for (表达式表达式1;表达式;表达式2;表达式;表达式3)循环体(语句组)循环体(语句组);图4.1 for 循环的结构for 循环(计数型循环)循环(计数型循环)for(int i=1;i=10;i+)sum=sum+i;当型循环(当型循环(while 循环)循环)i=1;while(i=10)sum=sum+i;i=i+1;直到型循环(直到型循环(do while 循环)循环)i=1;do sum=sum+i;i=i+1;while(i=10);初值、终值、
10、增值初值、终值、增值循环中的循环中的3个表达式个表达式一个也不能少!一个也不能少!/*/*功 能:求自然数1100之和 */*时 间:2010年3月17日 */*#include using namespace std;int main()int i=0,sum=0;/声明i,sum为整型变量并初始化为0for(i=1;i=100;i=i+1)/for 循环 /循环体开始sum=sum+i;/累加求和 /循环体结束cout自然数1100之和为 sum=1;i=i-1)/用 for 循环作累乘运算cout “i=”i;/显示 isum=sum*i;/每一步乘积cout tsum=sum endl
11、;/显示每一步乘积for(j=1;j=5500;j=j+1)for(k=1;k=10000;k=k+1);cout 10!=sum endl;/显示运算结果 return 0;/用用 for 循环延迟时间循环延迟时间运行结果:图4.2 求10!4.4 分支结构分支结构if(sum=3)cout This man is char(64+k)endl;g=1;如果sum真的为 3 时,做下面两件事:(1)输出做好事的人;(2)将本题的有解标志置为 1。其中(sum=3)为条件判断语句中的条件,根据其真假使程序分支。图4.3 分支结构一般格式:1.if (表达式)语句 1;2.if (表达式)语句块
12、 1;3.if (表达式)语句 1;else 语句 2;4.if (表达式)语句块 1;else 语句块 2;分支结构中可能出现的逻辑错误:1)当需要使用一个嵌套结构时使用了一个逻辑运算符2)主要判断和次要判断颠倒3)使用不必要的嵌套结构例:正确算法1.输入员工性别和年龄2.if (员工是男性)if (年龄大于60)显示“退休”else 显示“在职”算法 1)1.输入员工性别和年龄2.if (员工是男性 and 年龄大于60)显示“退休”else 显示“在职”算法 2)1.输入员工性别和年龄2.if (年龄大于60)if (员工是男性)显示“退休”else 显示“在职”算法3)1.输入员工性别
13、和年龄2.if (员工是男性)if (年龄大于60)显示“退休”else if (年龄小于等于60)显示“在职”算法 1)2)错误算法 3)正确但低效用 switch 形式创建多路分支:cout grade;switch (grade)case A:case a:cout “Excellent”endl;break;case B:case b:cout “Above Average”endl;break;case C:case c:cout “Average”endl;break;case D:case d:cout “Below Average”endl;break;default:cout
14、 “Error”endl;例子:#include using namespace std;int main()int x=0,y=0;/声明x,y为整型变量并初始化为0cout 请输入x x;/从键盘输入整数送至x中if(x0)/如果x0,将1赋给y y=1;elseif(x=0)/如果x=0,将0赋给y y=0;else y=-1;/否则x0,将-1赋给ycout 当x=x 时,y=y endl;/输出x,y的值 return 0;#include using namespace std;int main()int k=0,sum=0,g=0;/变量初始化为0char thisman=;fo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 章程 设计 基础
限制150内