分支程序相关设计方案_第1页
分支程序相关设计方案_第2页
分支程序相关设计方案_第3页
分支程序相关设计方案_第4页
分支程序相关设计方案_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分支程序相关设计方案关系表达式关系表达式用来实现比较关系运算符

>,>=,==,<=,<,!=

优先级:高于赋值运算符,低于算术运算符。关系运算符内部:===较低结合性:左结合关系表达式用关系运算符将二个表达式连接起来称为关系表达式关系表达式的结果是:true或falseeg.x<y

a<b==c<d都是合法的关系表达式注意:-2<-1<0与PYTHON中的含义不一样关系表达式续算术运算符的优先级比关系运算符高注意事项“等于”运算符是由两个等号组成。常见的错误是在比较相等时用一个等号。要小心避免冗余。主要是在关系表达式中需要判别布尔型的变量的值时。判别一个布尔变量flag的值是否为true,初学者常常会用表达式flag==true。事实上,只要用一个最简单的表达式:flag就可以了

5+3>6-2(5+3)>(6–2)第3章逻辑思维及分支程序设计关系表达式逻辑表达式If语句Switch语句逻辑表达式逻辑表达是用于实现更复杂的判断逻辑运算符

&&(and)||(or)!(not)

优先级:!>关系运算符>&&>||逻辑表达式由逻辑运算符连接起来的表达式,其结果为“真(true)”或“假(false)”逻辑表达式须注意C++中,参加逻辑运算的对象可为任意类型的数据,0为假,非0为真。

5%2&&pp5>3&&2||8<4-!01短路求值:逻辑表达式在执行时,先处理左边。如左边已能决定此逻辑表达式的结果,则右边不执行。逻辑表达式须注意续在&&逻辑表达式中,应把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第3章逻辑思维及分支程序设计关系表达式逻辑表达式If语句Switch语句条件检查与if语句if语句的格式

if(条件测试)语句

if(条件测试)语句1else语句2条件测试为true时所执行的程序块叫做then子句,条件为false时执行的语句叫做else子句。

eg.if(grade>=60)cout<<“passed”;

eg.if(grade>=60)cout<<“passed”;elsecout<<“failed”;

条件语句使用注意条件的结果值应该是true或false,它们是C++中bool类型的值事实上,条件可为任意表达式,不一定是关系表达式。0为false,非0为true。常见的错误:条件测试是比较相等时,用一个等号,合理的缩排,使程序结构更加清晰判断闰年的程序#include<iostream>usingnamespacestd;intmain(){intyear;boolresult;cout<<"请输入所要验证的年份:";cin>>year;result=(year%4==0&&year%100!=0)||year%400==0;if(result)cout<<year<<"是闰年"<<endl;elsecout<<year<<"不是闰年"<<endl;return0;}if语句的嵌套if语句的then子句或else子句是if语句,称为if语句的嵌套歧义性:if语句可以没有else子句,如if(x<100)if(x<90)语句1elseif(x<80)语句2else语句3else语句4;配对原则:每个else子句是和在它之前最近的一个没有else子句的if语句配对。缩进对齐可以清晰地表示出层次,便于程序员阅读if(x<100)if(x<90)语句1elseif(x<80)语句2else语句3else语句4;条件表达式?:运算符:问号冒号运算符作用:更加简练的用来表达条件执行的方式形式:

(条件)?表达式1:表达式2执行过程:首先计算条件值。如果条件结果为true,则计算表达式1的值,并将它作为整个表达式的值。如果条件结果为false,则整个表达式的值为表达式2的值。实例例如将x和y中值较大的一个赋值给max,可以用下列语句:

max=(x>y)?x:y;?:运算符用于输出。例如,想输出一个布尔变量flag的值,如果直接用cout<<flag;

那么当flag为“真”时,输出为1;当flag为“假”时,输出为0。如果我们想让flag为“真”时输出true,为“假”时输出false,可以用if语句

if(flag)cout<<“true”;elsecout<<“false”;

看上去太罗嗦。但如果用?:运算符只需要一行

cout<<(flag?"true":"false")<<endl;第3章逻辑思维及分支程序设计关系表达式逻辑表达式If语句Switch语句switch语句格式:

switch(表达式)

{case常量表达式1:语句1case常量表达式2:语句2..case常量表达式n:语句ndefault:语句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常量表达式n:语句n;break;

default:语句n+1}执行过程:当表达式值为常量表达式1时,执行语句1;当表达式值为常量表达式2时,执行语句2;。。当表达式值为常量表达式n时,执行语句n;否则,执行语句n+1eg1.按下表将百分制成绩转换成5级记分制。

score>=90A90>score>=80B80>score>=70C70>score>=60Dscore<60Eswitch(score){casescore>=90:cout<<"A";break;casescore>=80:cout<<"B";break;casescore>=70:cout<<"C";break;casescore>=60:cout<<"D";break;default:cout<<"E";}score>=90A90>score>=80B80>score>=70C70>score>=60Dscore<60E表达式=成绩/10switch(score/10){case10:case9:cout<<"A";break;case8:cout<<"B";break;case7:cout<<"C";break;case6:cout<<"D";break;default:cout<<"E";}计算机自动出四则运算计算题生成题目switch(题目类型){case加法:显示题目,输入和的值,判断正确与否

case减法:显示题目,输入差的值,判断正确与否

case乘法:显示题目,输入积的值,判断正确与否

case除法:显示题目,输入商和余数的值,判断正确与否}要求自动出0-9之间的四则运算题,并批改结果关键问题如何让程序每次执行的时候都出不同的题目?随机数生成器rand():能随机生成0到RAND_MAX之间的整型数将生成的随机数映射到0-9之间:Rand()%10rand()*10/(RAND_MAX+1)。运算符的生成:用编码0-3表示四个运算符。因此题目的生成就是生成0-3之间的随机数。随机数的种子计算机产生的随机数称为伪随机数,它是根据一个算法计算出来的。系统为每个程序、每次执行指定的随机数的种子都是相同的,因此程序每次执行生成的随机数序列都是相同的。rand()种子1234812348改变随机数的种子设置种子的函数srand:srand(种子)如何让程序每次执行时选择的种子都不一样呢?选择系统时间为种子:time(NULL)取当前的系统时间。#include<cstdlib>//包含伪随机数生成函数#include<ctime>//包含取系统时间的函数#include<iostream>usingnamespacestd;intmain(){intnum1,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)//最容易忘的是switch下的大括号!!!{case0:cout<<num1<<"+"<<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论