C++程序设计课程介绍第3章 逻辑思维及分支程序设计.ppt

上传人:文库蛋蛋多 文档编号:2241158 上传时间:2023-02-05 格式:PPT 页数:37 大小:169KB
返回 下载 相关 举报
C++程序设计课程介绍第3章 逻辑思维及分支程序设计.ppt_第1页
第1页 / 共37页
C++程序设计课程介绍第3章 逻辑思维及分支程序设计.ppt_第2页
第2页 / 共37页
C++程序设计课程介绍第3章 逻辑思维及分支程序设计.ppt_第3页
第3页 / 共37页
C++程序设计课程介绍第3章 逻辑思维及分支程序设计.ppt_第4页
第4页 / 共37页
C++程序设计课程介绍第3章 逻辑思维及分支程序设计.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《C++程序设计课程介绍第3章 逻辑思维及分支程序设计.ppt》由会员分享,可在线阅读,更多相关《C++程序设计课程介绍第3章 逻辑思维及分支程序设计.ppt(37页珍藏版)》请在三一办公上搜索。

1、问题:上地理课时,四个学生回答我国四大湖大小时分别说:A:洞庭最大,洪泽最小,鄱阳第三 B:洪泽最大,洞庭最小,鄱阳第二,太湖第三 C:洪泽最小,洞庭第三 D:鄱阳最大,太湖最小,洪泽第二,洞庭第三 对于每个湖的大小,每个人仅答对一个,试判断四个湖的大小。,第3章 逻辑思维及分支程序设计,如何编程序解决这个问题?,需要计算机模拟人的思维过程最基本的工具是判断对与错对与错的判断用关系表达式和逻辑表达式实现如何根据判断去决定下一步的动作由条件语句实现,第3章 逻辑思维及分支程序设计,关系表达式逻辑表达式If 语句Switch语句,关系表达式,关系表达式用来实现比较关系运算符,=,=,=,!=优先级

2、:高于赋值运算符,低于算术运算符。关系运算符内部:=和!=较低 结合性:左结合关系表达式 用关系运算符将二个表达式连接起来称为关系表达式 关系表达式的结果是:true 或 false,eg.x y,a b=c d 都是合法的关系表达式,注意:-2-1 0 与日常生活中的含义不一样,关系表达式 续,算术运算符的优先级比关系运算符高 注意事项“等于”运算符是由两个等号组成。常见的错误是在比较相等时用一个等号。要小心避免冗余。主要是在关系表达式中需要判别布尔型的变量的值时。判别一个布尔变量flag的值是否为true,初学者常常会用表达式flag=true。事实上,只要用一个最简单的表达式:flag就

3、可以了,5+3 6-2,(5+3)(6 2),第3章 逻辑思维及分支程序设计,关系表达式逻辑表达式If语句Switch语句,逻辑表达式,逻辑表达是用于实现更复杂的判断逻辑运算符&(and)|(or)!(not)优先级:!关系运算符&|逻辑表达式 由逻辑运算符连接起来的表达式,其结果为“真(true)”或“假(false)”,eg.写出下列问题的C语言表达式,1 检查字符变量a的内容是否为字母。,a=a&a=A&a=Z,2 整型变量m的内容是否为偶数,m%2=0,注意,不能写成a=a=z|A=a=Z,逻辑表达式须注意,C+中,参加逻辑运算的对象可为任意类型的数据,0为假,非0 为真。5%2&p

4、p 5 3&2|8 4-!0 1逻辑表达式在执行时,先处理左边。如左边已能决定此逻辑表达式的结果,则右边不执行。因此,在&逻辑表达式中,应把false可能性较大的条件放在左边,在|表达式中,应把true可能性较大的条件放在左边,这样可以减少程序执行的时间,逻辑表达式须注意 续,尽量避免在一个逻辑表达式中完成多项任务,eg.(m=a b)&(n=c d)a=1,b=2,c=2,d=4,m=1,n=1.问执行后m,n的值分别为多少?,m=0,n=1,逻辑运算常见错误,当采用逻辑操作符 时,必须要细心,避免一些常见错误。例如:如果要想表达x即不等于2也不等于3,若写成:if(x!=2|x!=3)/错

5、误!正确形式为:if(!(x=2|x=3)ORif(x!=2&x!=3),将关系写成表达式,A:洞庭最大,洪泽最小,鄱阳第三B:洪泽最大,洞庭最小,鄱阳第二,太湖第三C:洪泽最小,洞庭第三D:鄱阳最大,太湖最小,洪泽第二,洞庭第三,用a,b,c,d分别表示四个湖的排序。A表示洞庭,b表示洪泽,c表示鄱阳,d表示太湖。A学生的回答可表示为:a=1&b=4&c=3B学生的回答可表示为:a=4&b=1&c=2&d=3C学生的回答可表示为:a=3&b=4D学生的回答可表示为:a=3&b=2&c=1&d=4,C+的一个重要的特点是可以将各种类型的数据混合使用。可以把一个逻辑类型的值用于算术表达式。此时,

6、true代表1,false代表0。由于每位学生都只说对了一个,即每位同学的若干个关系表达式中只有一个为真,其余都为假。因此,对A同学:(a=1)+(b=4)+(c=3)=1对B同学:(a=4)+(b=1)+(c=2)+(d=3)=1对C同学:(a=3)+(b=4)=1对D同学:(a=3)+(b=2)+(c=1)+(d=4)=1本题的答案就是找同时满足上面四个条件的答案,第3章 逻辑思维及分支程序设计,关系表达式逻辑表达式If语句Switch语句,条件检查与if语句,if语句的格式 if(条件测试)语句 if(条件测试)语句1 else 语句2条件测试为true时所执行的程序块叫做then子句,

7、条件为false时执行的语句叫做else子句。eg.if(grade=60)cout=60)cout“passed”;else cout“failed”;,条件语句使用注意,条件的结果值应该是 true 或 false,它们是C+中bool类型的值事实上,条件可为任意表达式,不一定是关系表达式。0 为false,非 0 为true。常见的错误:条件测试是比较相等时,用一个等号合理的缩排,使程序结构更加清晰,编一程序解一元二次方程,int main()float a,b,c,x1,x2,dlt;cout a;cout b;cout c;,dlt=b*b 4*a*c;if(dlt=0)x1=(-b

8、+sqrt(dlt)/2/a;x2=(-b-sqrt(dlt)/2/a;cout x1 x2;else cout“no root”;return 0;,判断闰年的程序,#include using namespace std;int main()int year;bool result;cout year;result=(year%4=0,if语句的嵌套,If 语句的then子句或else子句是 if 语句时,称为if 语句的嵌套歧义性:if 语句可以没有else子句,如if(x 100)if(x 90)语句1 else if(x80)语句2 else 语句3 else 语句4;配对原则:每个

9、else子句是和在它之前最近的一个没有else子句的if语句配对。,缩进对齐,可以清晰地表示出层次,便于程序员阅读,if(x 100)if(x 90)语句1 else if(x80)语句2 else 语句3 else 语句4;,条件表达式,?:运算符:问号冒号运算符作用:更加简练的用来表达条件执行的方式 形式:(条件)?表达式1:表达式2 执行过程:首先计算条件值。如果条件结果为true,则计算表达式1的值,并将它作为整个表达式的值。如果条件结果为false,则整个表达式的值为表达式2的值。,实例,例如将x和y中值较大的一个赋值给max,可以用下列语句:max=(x y)?x:y;?:运算符用

10、于输出。例如,想输出一个布尔变量flag的值,如果直接用 cout flag;那么当flag为“真”时,输出为1;当flag为“假”时,输出为0。如果我们想让flag为“真”时输出true,为“假”时输出false,可以用if 语句 if(flag)cout“true”;else cout“false”;看上去太罗嗦。但如果用?:运算符只需要一行 cout(a?true:flase)endl;,第3章 逻辑思维及分支程序设计,关系表达式逻辑表达式If语句Switch语句,switch语句,格式:switch(表达式)case 常量表达式1:语句1 case 常量表达式2:语句2.case 常量

11、表达式n:语句n default:语句n+1,执行过程:当表达式值为常量表达式1时,执行语句1到语句n+1;当表达式值为常量表达式2时,执行语句2到语句n+1;。当表达式值为常量表达式n时,执行语句n到语句n+1;否则,执行语句n+1,用于多分支的情况,switch语句 续,default子句可以省略default子句省略时,当表达式的值不等于表达式1到表达式n的值时,直接跳出switch语句,执行switch语句的下一语句,Break语句,作用:跳出当前的switch语句,switch(表达式)case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;.case

12、 常量表达式n:语句n;break;default:语句n+1,执行过程:当表达式值为常量表达式1时,执行语句1;当表达式值为常量表达式2时,执行语句2;。当表达式值为常量表达式n时,执行语句n;否则,执行语句n+1,eg1.按下表将百分制成绩转换成5 级记分制。,switch(score)case score=90:cout=80:cout=70:cout=60:cout D;break;default:cout E;,表达式=成绩/10,switch(score/10)case 10:case 9:cout A;break;case 8:cout B;break;case 7:cout C

13、;break;case 6:cout D;break;default:cout E;,计算机自动出四则运算计算题,生成题目Switch(题目类型)case 加法:显示题目,输入和的值,判断正确与否 case 减法:显示题目,输入差的值,判断正确与否 case 乘法:显示题目,输入积的值,判断正确与否 case 除法:显示题目,输入商和余数的值,判断正确与否,要求自动出0-9之间的四则运算题,并批改结果,关键问题,如何让程序每次执行的时候都出不同的题目?随机数生成器rand():能随机生成0到RAND_MAX之间的整型数 将生成的随机数映射到0-9之间:rand()*10/(RAND_MAX+1

14、)。运算符的生成:用编码0-3表示四个运算符。因此题目的生成就是生成0-3之间的随机数。,随机数的种子,计算机产生的随机数称为伪随机数,它是根据一个算法计算出来的。系统为每个程序、每次执行指定的随机数的种子都是相同的,因此程序每次执行生成的随机数序列都是相同的。,改变随机数的种子,设置种子的函数srand:srand(种子)如何让程序每次执行时选择的种子都不一样呢?选择系统时间为种子:time(NULL)取当前的系统时间。,#include/包含伪随机数生成函数#include/包含取系统时间的函数#include using namespace std;int main()int num1,

15、num2,op,result1,result2;/num1,num2:操作数,op:运算符,result1,result2:结果 srand(time(NULL);/随机数种子初始化 num1=rand()*10/(RAND_MAX+1);/生成运算数 num2=rand()*10/(RAND_MAX+1);/生成运算数 op=rand()*4/(RAND_MAX+1);/生成运算符 0-+,1-,2-*,3-/,自动出题程序,switch(op)case 0:cout result1;if(num1+num2=result1)cout result1;if(num1-num2=result1)cout result1;if(num1*num2=result1)cout you are rightn;else cout you are wrongn;break;,case 3:cout result1;cout result2;if(num1/num2=result1),该程序的缺陷,每次执行只能出一道题减法可能出现负值除法可能出现除0结果太单调,小结,本章主要介绍了计算机实现逻辑思维的机制。主要包括两个方面:如何表示一个逻辑判断如何根据逻辑判断的结果执行不同的处理逻辑判断关系表达式实现逻辑表达式根据逻辑判断执行不同的处理if语句switch语句,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号