C程序的流程控制

上传人:无*** 文档编号:123616409 上传时间:2022-07-22 格式:PPTX 页数:39 大小:366.97KB
返回 下载 相关 举报
C程序的流程控制_第1页
第1页 / 共39页
C程序的流程控制_第2页
第2页 / 共39页
C程序的流程控制_第3页
第3页 / 共39页
点击查看更多>>
资源描述
程序或程序模块的三种基本结构程序或程序模块的三种基本结构 通过安排语句的排列顺序来决定程序流程由特定的条件决定执行哪个语句的程序结构由特定的条件决定某个语句重复执行次数的控制方式顺序结构顺序结构 按语句的先后顺序依次执行每一条语句语句1语句2顺序结构示意X=3;Y=4Z=X;X=YY=Z;程序段完成的功能是:交换程序段完成的功能是:交换X和和Y的值的值例:条件语句1语句2falsetrue语句格式:含义:如果条件成立,执行语句1,否则执行语句2流程示意:If多分支结构一多分支结构一条件分支结构条件分支结构 条件语句truefalse语句格式:含义:如果条件成立,执行语句1,否则什么也不做(即跳出if语句的执行,到下一第语句)流程示意:(无else子句)If多分支结构二多分支结构二条件分支结构条件分支结构 例1:输入2个数,找出其中最大的一个并显示出来。#includevoid main()int i,j;coutij;cout=j)coutiendl;else coutjendl;条件分支结构例2:输入3个数,找出其中最大的一个并显示出来。#includevoid main()int i,j,k;coutijk;cout“3个数中最大的是:”;if(ij)i=j;if(ik)i=j;coutiendl;两条无else分支的语句例3:输入3个数,然后按从大到小的顺序把它们显示出来。#includevoid main()int i,j,k,p;coutijk;if(ij)p=i;i=j;j=p;if(ik)p=i;i=k;k=p;if(jk)p=j;j=k;k=p;coutendlijk;例4:P58,例3.5,请对照书本自主学习If 语句的嵌套语句的嵌套语句中出现多个if和多个else时,首先必须进行配对,配对原则:从遇见的第一个else开始,else总与离它最近的if配对。在if语句的else前嵌套另一个if语句容易使所表达的逻辑关系难于理解,应加以避免,必要时把嵌套位置改为else之后条件分支结构条件分支结构 If多分支结构多分支结构If多分支结构是一种通过规范化的if嵌套所构成的条件分支结构,在这种结构中if语句嵌套在else之后使用格式:条件分支结构条件分支结构 例:输入一个0100分范围内的一个成绩,显示相应的等级:90100优8089良 7079中6069及格60分以下不及格#includevoid main()float score;coutscore;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 多分支结构多分支结构 条件分支结构条件分支结构 switch语句格式:switch语句的含义:通过判断的值,决定程序的去向:若的值与的值相同,则依次执行开始的各个语句序列,即执行,,若的值与的值相同,则依次执行开始的各个语句序列,即执行,,依此类推 若的值不等于任何列出的整型常量表达式的值,则执行从开始的语句序列 若没有语句,则什么也不做。在依次执行语句序列的过程中,如遇见break语句,则立即停止语句序列的执行,跳出switch分支结构因此,若要让分支结构只执行与匹配的后的语句序列,而不往下执行下面的语句序列,应在该语句序列后加一条break语句在每一个后的语句序列后加break语句的switch分支结构,等同于if多分支结构。break语句在switch分支结构中的应用例1:输入一个表示星期的数字(0表示星期日,1表示星期二,6表示星期六),显示对应的英文单词。#includevoid main()int weekday;coutweekday;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多分支结构实现)#includevoid main()float score;coutscore;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 语句falsetruefor 循环结构示意for 循环含义首先进行,然后判断,若成立则执行;(若不成立,则结束循环)执行完后,再进行,然后再进行判断,若成立,则继续执行(否则跳出循环),执行完进行,然后再进行,条件成立继续执行,(否则跳出循环),直到跳出循环关于for 循环语句的几点说明是一个逻辑表达式和都应当具有副作用可以是复合语句,也可以是基本语句典型的for循环实例:for(int i=0;i100;i+=5)couti;如果一开始就不成立,则一次也不执行和可以为空,相当于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行 coutendl;/每次循环换行,换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)功能是为下一个要输出的数据设置输出宽度,该设置只对下一个数据输出有效。例如,cout1setw(8)20)cout0 循环体是一个基本语句:coutI-;分析:分析:第一次:I=20时,执行第一次循环,输出I的值20,同时在cout0不成立,不执行循环体,跳出循环。因此循环共执行了20次。do while 语句循环结构循环结构 do while 循环结构示意falsetruedo while 循环含义不判断条件直接执行一次循环体,循环体执行完后,再判断循环条件,若条件为真,则再次执行循环体,(若条件不成立,则跳出循环),在第二次循环体执行完后,继续先判断循环条件,条件满足,则执行循环体,直到条件不满足,跳出循环。do while 循环和while 循环的区别do while 循环无论循环条件是否满足,循环体至少执行一次;然后再根据循环条件决定是否继续执行循环体;while 循环循环条件不满足则循环体一次也不执行I=1;While(I=5)CoutI+;I=1;DoCoutI+;While(I=5)用do while 循环实现用while 循环实现用两种循环输出相同的内容:输出:12345用While循环与dowhile循环等效:I=6;While(I=5)CoutI+;/循环体一次也没执行,因此无任何内容输出I=6;DoCoutI+;While(I0;I-)s+=I;/for循环8次实现s=8+7+1,且I的值为0循环结束时,s的值为36While(+I5)s+=I;/while循环4次,把14再加到s中,I的值为5时循环结束,s的值为46后,s的值是()答案:46#include#includevoid main()double A,B,C;do coutendl ABC;while(A=0.0)/输入3个系数,当系数A为0时重新输入 coutendl;double Delta=B*B-4*A*C;/以下程序段根据Delta的值求方程的解 If(Delta0.0)cout0.0)cout“此方程有两个不同的实数解”;cout(-B+sqrt(Delta)/(A+A);cout“和”(-B-sqrt(Delta)/(A+A);else cout“此方程有两个相同的实数解”-B/(A+A);break:continue:说明:这两个语句通常与if语句同时使用,形如:if()break;if()continue当if条件成立时,退出循环或提前结束本轮循环体的执行循环特殊控制语句循环特殊控制语句 例:允许反复地输入半径,计算并显示圆面积,直到输入的半径是0时为止(即输入0是终止程序运行的信号);若发现是输入的半径是负数,提示操作者重新输入。#include#define PI 3.1416 void main()double radius,area;while(ture)/永真条件,允许反复输入半径 coutendlradius;if(radius=0.0)break;/半径为0,则结束永真条件的循环的执行 if(radius0.0)coutendl“输入错:半径不能为负!”continue;/半径为负,提前结束本次循环,回到循环条件判断,重新执行循环体,即重新输入半径 area=PI*radius*radius;/半径为正数时不执行以上两条if语句,直接求面积并输出 coutendl“圆的面积:”area;演讲完毕,谢谢观看!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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