《《程序流程控制 》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《程序流程控制 》PPT课件.ppt(19页珍藏版)》请在三一办公上搜索。
1、第4章 程序流程控制,4,内容提要,本章主要介绍C语言提供的各种程序流程控制结构包括选择结构循环结构其他转移控制语句。通过本章学习重点进行程序设计能力的训练,能编制完整的较为复杂的程序。,结构化程序设计的概念,结构化程序设计方法就是只采用3种基本的程序控制结构来编制程序,从而使程序具有好的结构。这3种基本结构就是顺序结构、选择结构和循环结构,见图4-1。,顺序结构,如图4-1(a)所示,S1和S2是一条语句或一个语句序列。在顺序结构中,S1和S2被依次执行,即只有当S1执行完成之后才执行S2。前3章中编制的简单程序,采用的都是顺序结构。这些程序在执行时,总是从第一个语句开始,顺序执行各个语句,
2、直到所有的语句都执行完,程序运行结束。,选择结构,如图4-1(b)所示。程序执行到选择结构时,首先对条件进行判断,当条件成立或不成立时分别执行S1或S2,二者择其一。不管执行哪一个语句序列,执行结束后,控制都转移到同一出口的地方。采用选择结构,可以使程序不是仅解决某一个问题,而是可解决某一类问题,编制这样的通用程序,可以收到事半功倍的效果。,循环结构,如图4-1(c)所示。程序执行到循环结构时,将会判断循环的条件是否成立。如果循环条件成立,将反复执行语句序列S1(也称循环体),直到条件不成立时终止循环,控制转移到循环体外,继续执行后续的部分。采用循环结构,可以大大减少编程的复杂性和工作量,用较
3、短的程序完成大量的处理工作。计算机算法的一个重要特点,就是将一个复杂的问题变成简单问题的多次重复。,选择结构,用if-else语句构成二分支选择结构 用if-else语句构成多分支选择结构 用条件表达式实现的选择结构 用switch语句构成多分支选择结构 用switch和break联合构成多分支选择结构,循环结构,for循环 while循环 do-while循环 循环的嵌套,转移控制语句,break语句 continue语句在循环结构中的作用 goto语句和标号,本章总结,本章应掌握结构化程序设计的3种基本程序控制结构。在深入理解各种选择结构和循环结构执行流程的基础上,正确使用if语句组织二分
4、支选择结构;用嵌套if、if-else if-else或switch语句组织多分支选择结构用for语句、while语句、do-while语句及其嵌套形式组织循环结构,并解决一些简单的实际问题。本章的难点是:选择结构和循环结构中测试表达式的正确构造和使用;选择结构和循环结构中空语句和复合语句的使用;switch选择结构和各种循环结构中转移控制语句break和continue的使用。,本章习题,一、选择题1.结构化程序设计使用的基本程序控制结构为_。A.模块结构、选择结构和递归结构 B.条件结构、顺序结构和过程结构C.顺序结构、选择结构和循环结构 D.转移结构、嵌套结构和递归结构2.若要求在if后
5、一对圆括号中表示a不等于0的关系,下列能正确表示这一关系的表达式是_。A.a0 B.!a C.a=0 D.a3.下面的程序_。main()int x=3,y=0,z=0;if(x=y+z)printf(*);else printf(#);A.有语法错误,不能通过编译B.输出*C.可以通过编译,但不能通过连接,因而不能运行D.输出#,本章习题,4.下面的程序运行时,若从键盘输入3和4,则输出为_。main()int a,b,s;scanf(%d%d,A.7 B.6 C.5 D.4,本章习题,6.若所有变量均已正确定义,下列程序段运行后x的值是_。a=b=c=0;x=35;if(!a)x-;els
6、e if(b);if(c)x=3;else x=4;A.34 B.4 C.35 D.37.若所有变量均已正确定义,下面的程序段所表示的数学函数关系是_。y=-1;if(x!=0)if(x0)y=1;else y=0;1(x0)1(x0)A.y=0(x=0)B.y=1(x=0)1(x0)0(x0)0(x0)1(x0)C.y=1(x=0)D.y=1(x=0)1(x0)0(x0),本章习题,8.下列与y=(x0?1:x0)y=1;B.if(x)else if(x0)y=1;else y=0;else if(x=0)if(x0)y=1;if(x0)y=1;else if(x=0)y=0;else y=
7、1;else y=1;,本章习题,9.若定义:float x;int a,b;,则下列4组switch语句中正确的是_。A.switch(x)B.switch(x)case 1.0:printf(*n);case 1,2:printf(*n);case 2.0:printf(*n);case 3:printf(*n);C.switch(a+b)D.switch(a+b);case 1:printf(*n);case 1:printf(*n);case 1+2:printf(*n);case 2:printf(*n);,本章习题,10.以下程序的输出结果是_。main()int a=0,i;fo
8、r(i=1;i5;i+)switch(i)case 0:case 3:a+=2;case 1:case 2:a+=5;default:a+=5;printf(%dn,a);A.37 B.13 C.10 D.20,本章习题,二、填空题1.以下两条if语句可合并成一条if语句为_。if(ab)printf(*y=%dn,y);else printf(#x=%dn,x);,本章习题,2.以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。main()float x,amax,amin;scanf(%f,本章习题,三、编程题1.从键盘输入100个整数,从中找出最大数和最小数。2.编一个程序计算4个已知数的最小公倍数。3.试编程计算1!+2!+20!。4.请编制程序打印出100以内的所有素数。5.李先生岁数的平方与他的夫人的岁数之和是1053,而他的夫人岁数的平方与他的岁数之和是873,请编程计算李先生及其夫人的岁数各是多少。,