C语言程序的流程控制_第1页
C语言程序的流程控制_第2页
免费预览已结束,剩余16页可下载查看

下载本文档

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

文档简介

1、第3章C语言程序的流程控制 利用计算机进行程序设计时,不仅仅只 处理一些简单的数据,在大部分的程序设计 里处理的问题还是相当复杂的。 对于那些复 杂的程序设计,读者不可能直接就能写出程 序的源代码,而是要通过一些具体的设计方 法(如用程序流程图)把程序设计思想先写 出来,然后根据程序流程图编写代码。 本章 将具体介绍进行程序设计时使用的基本方 法和C程序的流程控制。3.1程序设计的基本知识3.1.1程序流程图在描述一个程序的基本结构思想时有 很多种方法,其中 程序流程图是最常用也是 最基本的方法 。1.传统程序流程图传统流程图表示法的特点是用一些 图 框表示各种类型的操作,用 线表示这些操作

2、的执行顺序。美国国家标准化协会ANSI规 定了一些常用的流程图符号,现已为世界各 国普遍采用。我国也有自己的国家标准GB 1526-89与该标准基本相同,本书就参照ANSI标准做具体介绍。 标准中各种图示如 图3.1所示。起止框输入输出框判断框处理框或一o .匚流程线连接点注释框图 3.1 传统流程图表示法下面对其中一些主要符号作简要说明:(1)起止框是用来标识程序的开始和 结束位置的。规定流程图以起止框开始,以 起止框结束。(2)输入输出框也叫数据框,其中可 以注明数据名称、来源、用途或其它的文字 说明。(3)菱形框的作用是对一个给定的条 件进行判断,根据给定的条件是否成立来决 定如何执行其

3、后的操作。(4)处理框用矩形表示各种处理功 能。例如,执行一个或一组特定的操作,从 而使信息的值、信息的形式或所在位置发生 变化。另外在矩形框内可注明特定处理名称 或其简要功能。(5)流程线用带箭头的直线表示程序 的执行顺序。 当流程自左向右或自上向下时 流程线可以不带箭头,其它情况应加箭头表 示流程。(6)连接点用小圆圈表示将画在不同 地方的流程线连接起来。下图中有两个以 为标志的连接点,它表示这两个点是互联在 一起的,实际它们是同一个点。这种连接通 常用在图形画不下而需要分开画时。(7)注释框不是流程图的必要部分, 其不反映流程操作,只是为了流程图中某些 操作做解释补充的,以帮助阅读流程图

4、的人 更好的理解流程图的作用。2. N-S流程图灵活的流程线在程序设计中有它自己的 优点,但也隐藏着许多导致错误的祸根。因 为它允许用流程线使流程任意转移,这对程 序设计是一个隐患,它使程序流程看起来很 乱,使程序难以理解和维护。 针对这一弊病,1973年美国学者I . Nassi和B . Shneiderman提出了一种 无流程线的流程图, 称为N-S图。它的基本表示方法是用一个矩形框,把整个 程序算法像堆积木一样组成。其基本结构如 图3.3、3.4、3.5、3.6所示。3.1.2程序的三种基本结构结构化的程序设计方法是面向过程的程 序设计的基本方法。1996年意大利Bobra和Jacopi

5、ni提出了三种基本程序结构。已经证 明,这三种算法可以解决任何复杂的问题。1顺序结构直到条件语句组P P 成立语句组 1 1语句3.循环结构2 2(1)while循环结构条件 P P真NS流程图表示假构流句组1语句组 2 2不成立当条件 P P 成立语句组流程图表示)当型循环结木(N-SN-SJ J 流程图hile循环结构(传统流程图表示图 3.33.3 顺序结构 I I 流程图兀成立不成立(N-SN-S 流程图表示)图 3.43.4 选择结条件 P P成立(传统流程图表示)- .5.5语句组(2)dow例3.1画出求s=1+2+3+100的传 统流程图和N-S流程图。开始1赋值语句赋值语句由

6、赋值表达式加一个分号组成。例如:i = 1 ;2.函数调用语句函数调用语句由函数调用表达式后跟 一个分号组成。例如:strcpy( s1, stude nt, 4 );printf(good afternoonn );3.空语句 空语句是只有一个分号而没有其他表i=1;i=1; s=0;s=0;i=100i图 3.(2)表达式9真简单 if 句流程图.语句本ifelse格式:if(表达式)语句语句1; else语句2;句流程图整数,求其绝表达式假int x;printf( please enter a number: );scanf(%d,&x);if(xb) a+;b+; else

7、a=10; b=100;3.3.2switch语句一种用于多分支选择的语句switch语句, 用该语句编写的程序简洁、易懂。而 且,其执行效率要比同样功能的阶梯式ifelse ifelse语句要高的多。1. switch语句的一般形式switch语句的一般形式如下:switch(表达式)case常量表达式1:语句组1; case常量表达式2:语句组2;case常量表达式n:语句组n; default :语句组n+1;2. switch语句的执行过程 系统首先计算“表达式”的值,并逐个 与其后的 “常量表达式” 的值相比较, 当“表 达式”的值与某个“常量表达式”的值相等时,就以此作为程序执行的

8、入口, 执行switch结构中后面的各语句。如果没有任何一个case后面的“常量表达式”的值与表达式” 的值匹配,则执行default后面的语句 (组)。 例3.6用switch语句实现例3.4的功能。# include main()int score;printf(please input score(0-100):); scanf(%d ,&score); /*从键盘输入学 生成绩*/switch(score/10);case 10:case 9:printf(excellentn);break;case8:pr i ntf(goodn); break;case 7:printf(

9、mediumn); break;case 6:printf(passn); break;default:printf(failn);3.4循环结构程序设计C语言提供了循环控制的三种语句:while语句、dowhile循环语句和for循环 语句。3.4.1while语句while语句是一种条件循环结构, 其控 制结构如下:wh i l e(条件表达式)循环体例3.7计算并输出从1加到100的和:s =1+2+3+100。# includemain()int sum = 0 , i = 1;/*设置和与循环变量 */while(i=100) sum = sum+i;i+;printf( Sum=%

10、d , sum);程序执行结果如下:The sum of 1 to 100 equalsis:50503.4.2dowhile循环语句dowhile结构在C语言中用于实现“直 到型”循环。其一般形式为:do循环体while(条件表达式) ;例3.9用dowhile语句求1+2+3+100的和。# include main()int i=1 ,sum=0;do sum = sum+i;i+;while(imai n()int n, k;prin tf(Please in put a positive in teger:);sea nf( %d ,&n);printf( Number %d

11、 Factors:,n);for(k=1;k=n ;k+)if(n %k= =0)prin tf(%d,k);prin tf(n);程序某次的运行结果如下:Please in put a positive in teger:36/Number 36 Factors:1234691218363.4.4循环嵌套一个循环体内又可以包含另外一个完 整的循环结构,从而构成多重循环结构, 这就是循环的嵌套。因此可以使用for3.4.5continue和break语句1. continue语句continue语句可以出现在循环体中,其 作用是结束本次循环,但不退出循环结构。 它跳过循环体中下面尚未执行的语句

12、,直接 进行下一次是否执行循环的判定。例3.12输出60600之间所有不能被9整除的数。# includemain()int m;for(m=60; m=600 ; m+)if(m%9= =0)continue ;printf(%dn,m);由这个程序可以看出, 当某个自然数m被9整除时, 就利用continue语句结束本次 循环(其后的输出语句不执行) ,但不退出for循环结构,接着对下一个数进行判断。2. break语句break语句只能用在switch结构或循环 结构,而不能用于其他结构。但用在循环结 构中时, 只能 跳出(或终止) 它所在的循环 , 而不能同时跳出(或终止)多层循环。本

13、章小结从程序执行的流程来看,程序可分为三 种最基本的结构:顺序结构、分支结构以及 循环结构。本章从学习程序的流程图画法入 手系统的介绍了这三种基本结构。程序中执行部分最基本的单位是语句。 本章主要介绍了以下三种类型的语句:(1)表达式语句,任何表达式末尾加 上分号即可构成表达式语句,常用的表达式 语句为赋值语句。(2)复合语句,由把多个语句括起 来组成一个语句。复合语句被认为是单条语 句,它可出现在所有允许出现语句的地方, 如循环体等。(3)控制语句,用于控制程序流程, 由专门的语句定义符及所需的表达式组成。 主要有条件判断执行语句,循环执行语句, 转向语句等。C语言提供了多种形式的条件语句以构成分支结构。(1)if语句主要用于单向选择。(2)ifelse语句主要用于双向选择。(3)ifelse ifelse语句和switch语 句用于多向选择。这几种形式的条件语句一般来说是可以互 相替代的。C语言提供了三

温馨提示

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

评论

0/150

提交评论