C语言与程序设计教程 教学课件 ppt 作者 胡元义 全书教案_ 第3章

上传人:E**** 文档编号:89344991 上传时间:2019-05-23 格式:PPT 页数:275 大小:1.03MB
返回 下载 相关 举报
C语言与程序设计教程 教学课件 ppt 作者 胡元义 全书教案_ 第3章_第1页
第1页 / 共275页
C语言与程序设计教程 教学课件 ppt 作者 胡元义 全书教案_ 第3章_第2页
第2页 / 共275页
C语言与程序设计教程 教学课件 ppt 作者 胡元义 全书教案_ 第3章_第3页
第3页 / 共275页
C语言与程序设计教程 教学课件 ppt 作者 胡元义 全书教案_ 第3章_第4页
第4页 / 共275页
C语言与程序设计教程 教学课件 ppt 作者 胡元义 全书教案_ 第3章_第5页
第5页 / 共275页
点击查看更多>>
资源描述

《C语言与程序设计教程 教学课件 ppt 作者 胡元义 全书教案_ 第3章》由会员分享,可在线阅读,更多相关《C语言与程序设计教程 教学课件 ppt 作者 胡元义 全书教案_ 第3章(275页珍藏版)》请在金锄头文库上搜索。

1、第3章 三种基本结构的程序设计,3.1 程序基本结构及C程序语句分类 3.2 顺序结构程序设计 3.3 选择结构程序设计 3.4 循环结构程序设计 3.5 典型例题精讲,3.1 程序基本结构及C程序语句分类,3.1.1 程序的基本结构 计算机程序的一个重要方面就是描述问题求解的计算过程,即对计算步骤的描述。在程序设计语言中,一个计算步骤或者用一个基本语句实现,或者用一个控制结构实现。控制结构主要由控制条件和被控制的语句组成,不同的控制结构用于描述不同的控制方式,实现对程序中各种成分语句的顺序、选择和循环等方式的控制。,1966年,Bohm和Jacopini的研究表明,只需要采用顺序结构、选择结

2、构和循环结构这三种控制结构就能够编写所有的程序。 对于一些规模较大而又比较复杂的问题,解决的方法往往是把它们分解成若干个较为简单和基本问题进行求解;这在程序设计中则表现为:将一个大程序分解为若干个相对独立且较为简单的子程序,这些子程序就是过程与函数。大程序通过调用这些子程序来完成预定的任务。过程与函数的引入不仅可以较容易地解决一些复杂问题,而且更重要的是使程序有了一个层次分明的结构,这就是结构化程序设计“自顶向下、逐步求精、模块化”的基本思想。,因此一个结构化程序是由顺序、选择和循环三种基本结构和过程(函数)结构组成的。结构化程序的开创者N.Wirth就曾这样说过:“在程序设计技巧中,过程是很

3、少几种基本工具中的一种,掌握了这种工具,就能对程序员工作的质量和风格产生决定性的影响”。N.Wirth所说的过程就是C语言中的函数,我们将在第5章介绍,下面只对三种基本结构进行介绍。,1) 顺序结构 顺序结构是按照语句的书写顺序依次执行各语句序列。图3-1(a)给出了顺序结构的流程图。图3-1(a)中A框和B框表示基本的操作处理,可以是一条语句也可以是多条语句,它表示程序在执行完A框操作后,将顺序去执行B框的操作,即严格按照语句的书写顺序进行。因此,顺序结构是一种最基本的程序结构。,2) 选择结构 选择结构是按照条件判断选择执行某段语句序列。图3-1(b)给出了选择结构的流程图。需要指出的是,

4、在选择结构程序中A框和B框的操作只能二选一;即执行了A框操作,就不能再执行B框操作;而执行了B框操作,就不能再执行A框操作。无论是执行了A框操作还是执行了B框操作,接下来都会继续向下顺序执行后继的操作。,3) 循环结构 循环结构能够通过条件判断控制循环执行某段语句序列。按照条件和循环执行的语句段之间的关系,可以细分为当型循环结构和直到型循环结构。图3-1(c)和图3-1(d)分别给出了当型循环结构和直到型循环结构的流程图。在当型循环结构中,需要先判断条件P,然后执行A框操作;若一开始P就不成立,则A框操作一次也不执行。直到型循环与当型循环的区别是这种循环要先执行A框操作,然后再判断条件P;也即

5、在直到型循环中,无论P条件成立与否,A框操作至少会被执行一次。,图3-1 结构化程序设计的三种基本结构,关于三种基本结构有以下几点说明: (1) 无论是顺序结构、选择结构还是循环结构,它们的共同特点是只有一个入口并且只有一个出口,整个程序就是由若干个这样的基本结构组合而成。 (2) 三种基本结构中的A、B操作是广义的,它们可以是一个操作,也可以是另一个基本结构或者几种基本结构的组合。,(3) 在选择结构和循环结构中都会出现判断框。但选择结构会根据条件P的成立与否决定执行A、B中的哪一个操作,且执行后就会脱离该选择结构而顺序执行下面的其他结构,也即选择结构中的A、B只能选择一个且只能执行一次。循

6、环结构则是在条件P成立时反复执行A操作,直到条件P不成时才跳出该循环结构而顺序执行下面的其他结构。,3.1.2 C程序中的语句分类 C语言中的语句分为简单语句和结构语句两类。简单语句是指那些不包含其他语句成分的基本语句;结构语句则指那些“句中有句”的语句,它是由简单语句或结构语句根据某种规则构成的。 C语言的语句分类情况如图3-2所示。,图3-2 C语言的语句分类,1) 表达式语句 在C语言中,由一个表达式加上一个分号“;”就构成了一个表达式语句。最典型的是由赋值表达式加上分号“;”,就构成了赋值语句。表达式语句的一般形式为: 表达式; 例如: i+; k=k+2; m=n=j=3; a=1;

7、,按照C语言的语法,任何表达式后面加上分号“ ; ”都可构成表达式语句,例如:“x+y;”也是一个C语言的语句,但这种语句没有实际意义。一般来说,语句的执行能使某些变量的值被赋予或改变,或者表达式能产生某种效果才能成为有意义的表达式语句。,2) 函数调用语句 由一个函数调用加一个分号“;”构成函数调用语句,其作用主要是完成该函数指定的操作。函数调用语句的一般形式为: 函数名(实际参数表); 例如: printf(“s=%dn“,s); 该语句是由一个printf格式输出函数加上一个分号“;”构成了一个函数调用语句。,3) 空语句 仅由一个分号“ ; ”构成的语句就是空语句,其一般形式为: ;

8、空语句是什么也不执行的语句。C语言引入空语句出于以下考虑:, 为了构造特殊控制结构的需要。例如,循环控制结构的语法上需要一个语句作为该循环语句的循环体(这种结构语句必须“句中有句”);当要循环执行的动作已经由循环控制部分完成时,就不再需要循环体语句了,但是为了满足结构语句这种“句中有句”的要求,就必须用一个空语句作为循环体。 在复合语句的末尾设置一个空语句来作为转向的目标位置,以便goto语句能够将控制转移到复合语句的末尾。,4) 复合语句 用一对花括号“ ”括起来的若干条语句称为复合语句,复合语句在语法上相当于一条语句(即从外部看一个复合语句就相当于一个语句)。复合语句的一般形式为: 语句1

9、; 语句n; 需要注意的是,复合语句内的各条语句都必须以分号结束,并且在复合语句的标识“”外不能加分号“ ; ”。,5) 控制语句 控制语句用来规定语句的执行顺序。C语言有如下9种控制语句: ifelse (条件语句) switch (多分支选择语句又称开关语句) while (循环语句) dowhile (循环语句) for (循环语句) continue (结束本次循环) break (退出循环或switch语句) goto (转移语句) return (返回语句) 这些语句的使用方法将在以后的章节中介绍。,3.2 顺序结构程序设计,3.2.1 赋值语句 顺序结构的程序在第2章中已多次出现

10、,顺序结构中出现的函数调用语句如printf和scanf也已在第2章介绍。下面,我们介绍顺序结构中出现的赋值语句。 赋值语句就是由赋值表达式与分号“ ; ”构成的,赋值语句的功能和特点都与赋值表达式相同,它是程序中使用最多的语句之一。,赋值语句的一般形式为: 变量=表达式; 例如: a=b+3; 与赋值表达式相同,赋值运算符“=”左边是变量而不能是常量或表达式。并且,赋值语句可以写成下面的形式: 变量=变量= 变量=表达式;,它表示将最右边的表达式逐一赋给赋值运算符左边的每一个变量。例如: a=b=c=d=10; C语言中有赋值表达式和赋值语句的概念,两者只差一个分号“ ; ”,而其他大多数高

11、级语言没有“赋值表达式”这一概念。因此,赋值表达式可以包含在其他表达式之中。 例如: if(a=b)0) x=a;,按大多数语言的语法规定,if后面的括号内是一个条件,例如“if(x0) ”而C语言中,这个x的位置可以是一个赋值表达式,如“a=b”;其作用是:先进行赋值运算(即先将b的值赋给a)然后再判断a是否大于0,如果大于0,则执行x=a(if语句见选择结构程序设计一节),但是在C语言中,像if、while和do语句的圆括号“( )”中一定是表达式,而不能是一个语句,如写成下面形式的语句就错了: if(a=b;)0) x=a;,C语言把赋值语句和赋值表达式区别开来,增加了表达式的种类,因此

12、能够实现其他高级语言难以实现的功能。例如: if(ch=getchar()=n); 这条语句的作用是:先从键盘输入一个字符赋给变量ch,然后判断ch是否等于换行符 n,如果等于换行符 n,则什么也不做。,此外要注意的是,必须清楚在变量定义中给变量赋初值和赋值语句的区别。给变量赋初值是变量说明的一部分,即必须一个变量一个变量的定义,且定义赋初值的变量与其后定义的其他同类变量之间必须用逗号“,”间隔。 例如: int a=10,b;,但不允许在变量定义时连续用赋值号给多个变量赋初值。如下面的变量定义方式是错误的: int a=b=c=10; 应该写成: int a=10,b=10,c=10; 而赋

13、值语句则允许连续赋值。例如: int a, b, c; a=b=c=10;,3.2.2 顺序结构程序 顺序结构的程序基本上是由函数调用语句和表达式语句构成的,这种结构的程序在执行中的特点是:一个操作执行完成后就接着执行紧随其后的下一操作。由于顺序结构非常简单,因此其求解的问题是有限的。,例3.1 输入三角形的三条边长,求三角形的面积。 解 已知三角形的三条边长a、b、c,则求三角形的面积可用下面的公式求出:,程序如下: #include #include void main() float a,b,c,p,s; printf(“Input a,b,c=“); scanf(“%f,%f,%f“,

14、p=1.0/2*(a+b+c); s=sqrt(p*(p-a)*(p-b)*(p-c); printf(“s=%6.2fn“,s); 运行结果: Input a,b,c=3,4,5 s= 6.00,该程序要注意如下两点: (1) 程序中使用了C语言的库函数sqrt来求平方根,因此,必须在程序开始处用include命令给出所使用库函数的说明。include命令必须以“#”开头,所说明的库函数文件名以“.h”作为其后缀,且该文件名用一对尖括号“”或一对双引号“ “”括起来;由于以#include开头的命令行不是语句,因此其末尾不加分号“;”,在此使用的库函数为数学函数math.h。,(2) 求p值

15、时的“ ”在程序中必须写成“1.0/2”,如果写为“1/2”则因两个整数相除后将舍去结果的小数部分而仅保留结果的整数部分,这样“1/2”的结果为0,而“1.0/2”则是一个单精度数和一个整数相除,其结果为单精度数,故不受影响;这一点在编写程序中要尤为注意,否则会产生很大的误差。,例3.2 从键盘上输入a和b的值,然后交换它们的值并输出交换后的a、b值。 解 在计算机中进行数据交换,如交换变量a和b的值,则不能简单地通过下面两条赋值语句实现: a=b; b=a;,因为当执行第一条赋值语句“a=b;”后,将变量b的值送入变量a的内存单元而覆盖掉变量a原有的值,即a的原值已经丢失,此时已具有变量b的

16、值(即a和b中都保存着b值);接下来再执行第二条赋值语句“b=a;”,则是将a中所保存的b值又送入变量b的内存单元,这样就无法实现将两个变量值相互交换的目的。因此,必须借助于一个中间变量t的过渡才能实现a、b值交换的目的,其实现过程是用连续的三个赋值语句实现的: t=a; a=b; b=t;,图3-3 按、步实现a与b之间数据的交换即执行“t=a;”后将a值保存于t中,再执行“a=b;”将b值赋给a(此时a中已为b值),最后执行“b=t;”将t中所保存的原a值赋给b,即实现了a与b值的交换。我们用图3-3给出变量a、b值的交换示意。,图3-3 按、步实现a与b之间数据的交换,程序如下: #include void main() int a,b,t; printf(“Input a,b=“); scanf(“%d,%d“, /*输出变量a和b的原值*/,t=a; a=b; b=t;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号