C程序的流程控制

上传人:208891****657173 文档编号:251960848 上传时间:2024-11-11 格式:PPT 页数:38 大小:209.50KB
返回 下载 相关 举报
C程序的流程控制_第1页
第1页 / 共38页
C程序的流程控制_第2页
第2页 / 共38页
C程序的流程控制_第3页
第3页 / 共38页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C+,程序的流程控制,第三章,程序或程序模块的三种基本结构,顺序结构,条件分支结构,循环结构,通过安排语句的排列顺序来决定程序流程,由特定的条件决定执行哪个语句的程序结构,由特定的条件决定某个语句重复执行次数的控制方式,顺序结构,按语句的先后顺序依次执行每一条语句,语句,1,语句2,顺序结构示意,X=3;,Y=4,Z=X;,X=Y,Y=Z;,程序段完成的功能是:交换,X,和,Y,的值,例:,条件,语句1,语句2,false,true,语句格式:,If(,条件,),语句1,else,语句2,含义:,如果,条件,成立,执行,语句1,,否则执行,语句2,流程示意:,If,多分支结构一,条件分支结构,条件,语句,true,false,语句格式:,If(,条件,),语句,含义:,如果,条件,成立,执行,语句1,,否则什么也不做(即跳出,if,语句的执行,到下一第语句),流程示意:,(无,else,子句),If,多分支结构二,条件分支结构,例1:输入2个数,找出其中最大的一个并显示出来。,#,include,void main(),int,i,j;,cout,ij;,cout,=j),cout,i,endl,;,else,cout,j,endl,;,条件分支结构,例2:输入3个数,找出其中最大的一个并显示出来。,#,include,void main(),int,i,j,k;,cout,ijk;,cout,“3,个数中最大的是:”;,if(ij)i=j;,if(ik)i=j;,cout,i,endl,;,两,条无,else,分支的语句,例3:输入3个数,然后按从大到小的顺序把它们显示出来。,#,include,void main(),int,i,j,k,p;,cout,ijk;,if(ij)p=i;i=j;j=p;,if(ik)p=i;i=k;k=p;,if(jk)p=j;j=k;k=p;,cout,endl,ijk;,例,4:,P58,,例3.5,请对照书本自主学习,If,语句的嵌套,语句中出现多个,if,和多个,else,时,首先必须进行配对,,配对原则:从遇见的第一个,else,开始,,else,总与离它最近的,if,配对。,在,if,语句的,else,前嵌套,另一个,if,语句容易使所表达的逻辑关系难于理解,应加以避免,必要时把嵌套位置改为,else,之后,条件分支结构,If,多分支结构,If,多分支结构是一种通过规范化的,if,嵌套所构成的条件分支结构,在这种结构中,if,语句嵌套在,else,之后,使用格式:,if(,条件,1,),语句1,else if(,条件2,),语句2,else if(,条件3,),语句3,else if(,条件,n,),语句,n,else,语句,n+1,条件分支结构,例:输入一个0100分范围内的一个成绩,显示相应的等级:,90100,优8089良7079中,6069及格60分以下不及格,#,include,void main(),float score;,cout,score;,if(score100),cout,“,成绩必须在0100之间”;,else if(score60),cout,“,不及格”,endl,:,else if(score70),cout,“,及格”,endl,;,else if(score80),cout,“,中”,endl,;,else if(score90),cout,“,良”,endl,;,else,cout,“,优”,endl,;,switch,多分支结构,switch(,整型表达式,),case,整型常量表达式1,:,语句序列1,case,整型常量表达式2,:,语句序列2,case,整型常量表达式,k,:,语句序列,k,default:,语句序列,k+1,条件分支结构,switch,语句格式:,switch,语句的含义:,通过判断,整型表达式,的值,决定程序的去向:,若,整型表达式,的值与,整型常量表达式1,的值相同,则依次执行,语句序列1,开始的各个语句序列,即执行,语句序列1,,,语句序列2,,,语句序列,k,语句序列,k+1,若,整型表达式,的值与,整型常量表达式2,的值相同,则依次执行开始的各个语句序列,即执行,语句序列2,,,语句序列,k,语句序列,k+1,依此类推,若,整型表达式,的值不等于任何列出的整型常量表达式的值,则执行从,default,开始的,语句序列,若没有,default,语句,则什么也不做。,在,依次执行语句序列的过程中,如遇见,break,语句,则立即停止语句序列的执行,跳出,switch,分支结构,因此,若要让分支结构只执行与,整型表达式,匹配的,整型常量表达式,后的语句序列,而不往下执行下面的语句序列,应在该语句序列后加一条,break,语句,在每一个,整型常量表达式,后的语句序列后加,break,语句的,switch,分支结构,等同于,if,多分支结构。,break,语句在,switch,分支结构中的应用,例1:输入一个表示星期的数字(0表示星期日,1表示星期二,6表示星期六),显示对应的英文单词。,#,include,void main(),int,weekday;,cout,weekday;,switch(weekday),case 0:,cout,“Sunday”,endl,;break;,case 1:,cout,“Monday”,endl,;break;,case 2:,cout,“Tuesday”,endl,;break;,case 3:,cout,“Wednesday”,endl,;break;,case 4:,cout,“Thursday”,endl,;break;,case 5:,cout,“Friday”,endl,;break;,case 6:,cout,“Saturday”,endl,;break;,/,weekday,的值为0时,显示,Sunday,break,语句阻止了往下执行输出语句,例2:输入一个0100分范围内的一个成绩,显示相应的等级:,90100,优8089良7079中,6069及格60分以下不及格,(用,switch,多分支结构实现),#,include,void main(),float score;,cout,score;,switch(,int,(score/10),case 0:,case 1:,case 2:,case 3:,case 4:,case 5:,cout,“,不及格”,endl,;break;,case 6:,cout,“,及格”,endl,;break;,case 7:,cout,“,中”,endl,;break;,case 8:,cout,“,良”,endl,;break;,case 9:,case 10:,cout,“,优”,endl,;break;,default:,cout,“,成绩必须在0100,分之间”,;,例2,说明:,int,(score/10),的值为0、1、2、3、4时分别执行,case0、case1、case2、case3、case4,后的语句序列是空的,程序从这些入口点进入后,直接往下走,并在执行完,case 5,后的语句并遇见,break,语句时跳出,switch,分支。因此当值为05时均显示“不及格”。,case 9,后的语句为空,从,case 9,进入后,直接往下执行,case 10,后的语句序列,遇见,break,语句时跳出,switch,分支。因此,值为9和10时均显示“优”。,循环结构,for(,循环初始化,;,循环条件,;,循环参数调整,),循环体,for,语句,循环初始化,循环条件,循环参数调整,循环体,false,true,for,循环结构示意,for,循环含义,首先进行,循环初始化,,然后判断,循环,条件,,若,循环,条件,成立则执行,循环体,;(若不成立,则结束循环),循环体,执行完后,再进行,循环参数的调整,,然后再进行,循环,条件,判断,若,循环,条件,成立,则继续执行,循环体,(否则跳出循环),,循环体,执行完进行,循环参数的调整,,然后再进行,条件判断,,条件成立继续执行,循环体,,(否则跳出循环),直到跳出循环,关于,for,循环语句的几点说明,循环条件,是一个逻辑表达式,循环初始化,和,循环参数的调整,都应当具有副作用,循环体,可以是复合语句,也可以是基本语句,典型的,for,循环实例:,for(,int,i=0;i100;i+=5),cout,i;,如果,循环条件,一开始就不成立,则,循环体,一次也不执行,循环初始化,和,循环参数的调整,可以为空,相当于,while,循环,循环条件,为空意味着永真条件,循环体,为空,可用于延迟一段时间,例:分析以下程序段的执行结果,for(,int,I=0;I=20;I+),cout,*;,分析:,第1次:循环初始化,I=0,,判断条件,I=20,成立,第一次执行循环体,输出第一个*;,第2次:进行参数调整,,I,增,1,,I,的值为1,条件成立,执行第二次循环,输出第二个*,第20次:,I,为19,循环条件成立,执行循环体,输出第20个*号,然后,I,调整为20;,第21次:,I,为20,循环条件成立,执行循环体,输出第21个*,然后,I,调整为21;,跳出循环:,I,的值为21,循环条件,I=20,不成立,跳出循环,执行结果:输出21个*号,例1:输入10个数,计算并显示它们的合计,#include,void main(),double x,s=0;/x,用于临时保存输入的数据,,s,用于,保存累加结果,称,s,为累加器,cout,“,请输入10个数:”;,for(,int,i=0;ix;,s+=x;,cout,“,合计:”,s;,例,2:显示并输出如下所示的三角形:,*第0行:5空、1*,*第1行:4空、3*,*第2行:3空、5*,*第3行:2空、7*,*第4行:1空、9*,*第5行:0空、11*,由以上得出:若行号为,i,则应输出的空格数为5-,i,应输出的*数为,i+i+1,程序如下页:,#include,void main(),for(,int,i=0;i6;i+)/,循环6次,输出6行,cout,endl,;/,每次循环换行,换6次,显示6行,int,j;,for(j=0;j5-i;j+),cout,/,每行,输出若干空格,for(j=0;ji+i+1;j+),cout,*/,然后输出若干*,cout,“,合计:”,s;,书本70页例3.11显示输出99乘法表。请看书本自主学习,注:,setw,(2),功能是为下一个要输出的数据设置输出宽度,该设置只对下一个数据输出有效。,例如,,cout,1,setw,(8)20),cout,0,循环体是一个基本语句:,cout,I-;,分析:,第一次:,I=20,时,执行第一次循环,输出,I,的值20,同时在,cout,0,不成立,不执行循环体,跳出循环。,因此循环共执行了20次。,do while,语句,do,循环体,while(,循环条件,),循环结构,do while,循环结构示意,循环条件,循环体,false,true,do while,循环含义,不,判断条件直接执行一次循环体,循环体执行完后,再判断循环条件,若条件为真,则再次执行循环体,(若条件不成立,则跳出循环),在第二次循环体执行完后,继续先判断循环条件,条件满足,则执行循环体,直到条件不满足,跳出循环。,do while,循环和,while,循环的区别,do while,循环,无论循环条件是否满足,循环体至少执行一次;然后再根据循环条件决定是否继续执行循环体;,while,循环,循环条件不满足则循环体一次也不执行,I=1;,While(I=5),Cout,I+;,I=1;,Do,Cout,I+;,While(I=5),用,do while,循环实现,用,w
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 临时分类 > 职业技能


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!