C语言程序的流程控制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序的流程控制 Prepared on 24 November 2020
第3章C语言程序的流程控制
利用计算机进行程序设计时,不仅仅只处理一些简单的数据,在大部分的程序设计里处理的问题还是相当复杂的。对于那些复杂的程序设计,读者不可能直接就能写出程序的源代码,而是要通过一些具体的设计方法(如用程序流程图)把程序设计思想先写出来,然后根据程序流程图编写代码。本章将具体介绍进行程序设计时使用的基本方法和C程序的流程控制。3.1程序设计的基本知识
3.1.1程序流程图
在描述一个程序的基本结构思想时有很多种方法,其中程序流程图是最常用也是最基本的方法。
1.传统程序流程图
传统流程图表示法的特点是用一些图框表示各种类型的操作,用线表示这些操作的执行顺序。美国国家标准化协会ANSI 规定了一些常用的流程图符号,现已为世界各国普遍采用。我国也有自己的国家标准GB 1526-89与该标准基本相同,本书就
参照ANSI标准做具体介绍。标准中各种图示如图所示。
起止框输入输出框判断框处理框
或
流程线连接点注释框
图传统流程图表示法
下面对其中一些主要符号作简要说明:
(1)起止框是用来标识程序的开始和结束位置的。规定流程图以起止框开始,以起止框结束。
(2)输入输出框也叫数据框,其中可以注明数据名称、来源、用途或其它的文字说明。
(3)菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立来决定如何执行其后的操作。
(4)处理框用矩形表示各种处理功能。例如,执行一个或一组特定的操作,从而使信息的值、信息的形式或所在位置发生变化。另外在矩形框内可注明特定处理名称或其简要功能。
(5)流程线用带箭头的直线表示程序的执行顺序。当流程自左向右或自上向下时流程线可以不带箭头,其它情况应加箭头表示流程。
(6)连接点用小圆圈表示将画在不同地方的流程线连接起来。下图中有两个以①为标志的连接点,它表示这两个点是互联在一起的,实际它们是同一个点。这种连接通常用在图形画不下而需要分开画时。
①
①
(7)注释框不是流程图的必要部分,其不反映流程操作,只是为了流程图中某些操作做解释补充的,以帮助阅读流程图的人更好的理解流程图的作用。
2.N-S流程图
灵活的流程线在程序设计中有它自己的优点,但也隐藏着许多导致错误的祸根。因为它允许用流程线使流程任意转移,这对程序设计是一个隐患,它使程序流程看起来很乱,使程序难以理解和维护。针对
这一弊病,1973年美国学者I . Nassi和B . Shneiderman提出了一种无流程线的流程图,称为N-S图。它的基本表示方法是用一个矩形框,把整个程序算法像堆积木一样组成。其基本结构如图、、、所示。3.1.2程序的三种基本结构
结构化的程序设计方法是面向过程的程序设计的基本方法。1996年意大利Bobra 和Jacopini提出了三种基本程序结构。已经证明,这三种算法可以解决任何复杂的问题。
1.顺序结构
流程图表示)
图
2.选择结构
不成立 成立
( 传统流程图表示) (N-S 流程图表示)
图 当型循环结构流程图
(2)do …while 循环结构
(N-S 流程图表示)
图
直到型流程图
例 画出求s=1+2+3+ … +100的传统流
程图和N-S 流程图。
当条件P 成立 语句组
1.赋值语句
赋值语句由赋值表达式加一个分号组成。例如:i = 1 ;
2.函数调用语句
函数调用语句由函数调用表达式后跟一个分号组成。例如:
strcpy( s1, "student", 4 );
printf("good afternoon\n " );
3.空语句
空语句是只有一个分号而没有其他表达式的语句。例如:
;
它不产生任何操作运算,只作为形式上的语句,被填充在控制结构之中。
3.2.2复合语句
C语言还允许把一组语句放在一对花括号之中,称为复合语句。要特别强调一点,一个复合语句的后花括号之后不应再写分号。例如:
{
c = getchar();
b = b +
c ;
putchar();
}
3.2.3流程控制语句
选择型结构语句
循环控制结构语句
流程转向语句
……
3.3选择结构程序设计
在C语言中实现选择结构的语句有两大类:if语句和switch语句。
3.3.1if语句
(1)简单if语句
格式:if(表达式)语句;
功能:如果表达式的值为真,则执行其后的语句,否则不执行该语句。其N-S 流程图如图表示。
功能:如果表达式值为真,则执行语句1,否则执行语句2。其执行过程如图所示。
图
例
值并输出。
# include<>
{
int x;
printf(" please enter a number: ");
scanf("%d",&x);
if(x<0)
x=-x;
else
x=x;
printf("number abs is d%",x);
}
(3)if语句的嵌套
当if语句中执行的语句又是if语句时,那么就构成了if语句的嵌套。其一般形式可以表示如下: