C语言程序设计(第二版) 教学课件 ppt 作者 夏宽理 赵子正编著 第3章 结构化程序设计

上传人:E**** 文档编号:89384002 上传时间:2019-05-24 格式:PPT 页数:78 大小:883KB
返回 下载 相关 举报
C语言程序设计(第二版) 教学课件 ppt 作者 夏宽理 赵子正编著 第3章 结构化程序设计_第1页
第1页 / 共78页
C语言程序设计(第二版) 教学课件 ppt 作者 夏宽理 赵子正编著 第3章 结构化程序设计_第2页
第2页 / 共78页
C语言程序设计(第二版) 教学课件 ppt 作者 夏宽理 赵子正编著 第3章 结构化程序设计_第3页
第3页 / 共78页
C语言程序设计(第二版) 教学课件 ppt 作者 夏宽理 赵子正编著 第3章 结构化程序设计_第4页
第4页 / 共78页
C语言程序设计(第二版) 教学课件 ppt 作者 夏宽理 赵子正编著 第3章 结构化程序设计_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《C语言程序设计(第二版) 教学课件 ppt 作者 夏宽理 赵子正编著 第3章 结构化程序设计》由会员分享,可在线阅读,更多相关《C语言程序设计(第二版) 教学课件 ppt 作者 夏宽理 赵子正编著 第3章 结构化程序设计(78页珍藏版)》请在金锄头文库上搜索。

1、1,第3章 结构化程序设计,3.1 基本语句 3.2 顺序结构 3.3 选择结构 3.4 循环结构 3.5 简单程序设计实例,2,3.1 基本语句表达式语句,基本语句主要有表达式语句、空语句、goto语句、break语句、continue语句、return语句等。基本语句都以分号为结束符。 1表达式语句 格式:表达式; 例如:k+; k = k+2;,3,3.1 基本语句空语句,2空语句 格式:; 功能:什么也不做的语句。 例如:for( , , ) ; /* 无循环体 */ if(条件1) if(条件2) 语句1; else ; else 语句2;,4,3.1 基本语句break语句,3br

2、eak语句 格式:break; 功能:强制结束它所在的控制结构 (switch或循环结构)。 例如:for( , , ) /* 大括号内是循环体 */ 语句1; break; /* 跳出循环,转做语句2 */ 语句2;,5,3.1 基本语句continue语句,4continue语句 格式:continue; 功能:提早结束当前轮次循环体的执行,进入下一轮循环。 例如: for( , , ) /* 大括号内是循环体 */ 语句1; continue; /* 不执行语句2 */ 语句2; 语句3;,6,3.1 基本语句return语句,5return语句 格式:return;或 return 表

3、达式; 功能:结束函数的这次执行,将控制返回到函数调用处。 说明:return; 只能用于函数不返回结果的函数体中; return 表达式; 用于函数有返回结果的函数体中。 例如:void swap(int a, int b) /* 大括号内是函数体 */ 语句1; return; /* 不执行语句2,返回到调用函数 */ 语句2; ,7,3.1 基本语句goto语句,6goto语句 格式:goto 语句标号; 功能:控制立即转移到goto后标号所指定的语句处继续执行。 例如: start: i = 0; . . . goto start;,8,3.2 顺序结构,目前,结构化程序设计提供三种基

4、本结构:顺序结构、选择结构和循环结构。 顺序结构:描述一个计算步骤序列,表示从步骤序列的第一个计算步骤开始,顺序执行每个计算步骤,直至最后一个计算步骤。 在C程序中,顺序执行的语句序列,用花括号括住,就构成C语言的复合语句。 复合语句中的每个计算步骤可以是单个语句,也可以是一个控制结构。,9,顺序结构 例,【例】交换变量x、y的值。 可分解为以下顺序执行的三个计算: temp = x; /* 将x的值保存到变量temp */ x = y; /* 变量x置y值 */ y = temp; /* 变量y置temp的值 */ 若把交换变量x、y的值作为一个不可分割的整体来考虑,应把它们写成复合语句:

5、/* 本复合语句要求外面为它定义temp变量 */ temp = x; x = y; y = temp; ,10,顺序结构 说明,在构造复合语句时,为完成指定的工作,可能需要临时工作变量,例如,以上述中的temp变量。在语句序列中插入变量定义,引入只有复合语句内的语句可使用的临时变量。例如,将前面的例子改写成以下形式: int temp; /* 定义自己专用的临时变量 */ temp = x; x = y; y = temp; ,11,3.3 选择结构,选择结构可分为两路条件选择结构和多路按值选择结构两种。 3.3.1 两路条件选择结构 (if 语句) 由一个条件和两个供选择的分支语句组成,用

6、于按条件成立与不成立两种情况,作两种选一的控制。,12,两路条件选择结构 (if 语句),if 语句的一般形式为: if (表达式) 语句1 else 语句2,例如: if (a b) printf(“MAX = %fn“, a); else printf(“MAX = %fn“, b); 说明:当ab成立时,输出a,否则,输出b。,13,if 语句无else,当 if 语句中的语句2为空语句时, if 语句的形式为: if (表达式) 语句,例如: max=a; if (max b) max=b; printf(“MAX = %fn“, max); 说明:将a、b中大的数存于max,最后输出

7、max。,14,if 语句例3.1和3.2,【例3.1】求m = max(a, b)。 if ( a c /* 不能构成三角形 */,15,if 语句例3.3和3.4 ( if 嵌套),【例3.3】若ch中的字符为大写字母,则改为对应的小写字母。 if (ch=A ,16,if 语句的嵌套,if (表达式1) if (表达式2) 语句1 else 语句2,执行语句2的条件是: (表达式1) & !(表达式2) 还是 !(表达式1),else 总是与它前面最接近的 if 对应,if (表达式1) if (表达式2) 语句1 else 语句2,17,if 语句的嵌套说明,上例中若要执行语句2的条件

8、为: !(表达式1),可用以下两种方法实现: 方法一:if (表达式1) /* 将分支语句变成一个复合语句 */ if (表达式2) 语句1 else 语句2 方法二:if (表达式1) if (表达式2) 语句1 else; /* 这里有1个空语句 */ else 语句2,18,3.3.1 if 语句的说明,如果if语句中的语句、语句1、语句2是一个简单语句,在这些简单语句之后会有一个分号。 如果if语句中的语句、语句1、语句2是由多个语句组成的顺序结构时,则必须将它们写成复合语句。 【例】 if ( a b ) /* 按小到大排列 */ temp = a; a = b; b = temp;

9、,19,3.3.1 if 语句的说明,如果if语句中的语句、语句1、语句2是一个简单语句,在这些简单语句之后会有一个分号。 如果if语句中的语句、语句1、语句2是由多个语句组成的顺序结构时,则必须将它们写成复合语句。 【例】 if ( a b ) /* 按小到大排列 */ temp = a; a = b; b = temp;,20,3.3.1 if 语句的说明,3. 在if语句中,每个else总要与它前面的if对应,不可能出现没有对应if 的else。 【例】 if ( a b ) max = b; else max = a; else max = c; /* 错误 */,21,【例3.5】输

10、入3个整数,输出它们中的最大数,为求三个数中的最大者,最简洁的办法是先将其中某一个预作最大者,然后逐一与其它两个数比较,当发现有更大者时,就以它重置最大者。 #include void main() int a, b, c, max; printf(“输入3个整数. n“); scanf(“%d%d%d“, ,22,【例3.6】输入三个整数,按值大到小的顺序输出,要求:有x、y、z三个变量,使满足关系 x = y = z。 方法:先调整x和y,使 x = y;再调整x和z,使 x = z;至此,x为最大值。最后再调整y和z,使 y = z。 #include void main() int x

11、, y, z, temp; printf(“Enter x, y, z.n“); scanf(“%d%d%d“, ,23,【例3.7】求一元二次方程的根,设一元二次方程为ax2+bx+c=0,对输入的系数a、b、c,有以下几种情况需要考虑: (1) a0: 方程有两个根。 (2) a=0, b0: 方程退化为bx+c=0, 方程根为:-c/b。 (3) a=0, b=0: 方程为同义反复(c=0), 或 矛盾(c0)。 由以上分析得到以下程序结构: (1) 输入方程系数 a, b, c; if ( a != 0.0 ) (2)求两个根; else if ( b != 0.0 ) (3) 输出方

12、程根 -c/b; else if ( c = 0 ) (4) 输出方程同义反复字样; else (5) 输出方程矛盾字样; ,24,【例3.7】求一元二次方程的根分析,分析1:对步骤、,用C语言描述非常简单。 分析2:对步骤,根椐判别式: =b2-4ac0,有两个实根 =b2-4ac0,有两个复根 对于两个复根情况,可分别计算它们的实部和虚部。对于实根,也可根据上面给出的公式计算两个根。但是考虑到 b2 4ac 时,有一个根就非常接近零。数值计算中,两个非常接近的数执行减法求出的值的精度很低。为此先求出一个绝对值大的根root1。然后,利用根与系数的关系: root1*root2 = c/a

13、即 root2 = c/(a*root1) 求出 root2。,25,【例3.7】求一元二次方程的根程序,#include #include /* 使用数学库函数 */ void main() double a, b, c, delta, re, im, root1, root2; printf(“输入方程系数 a, b, cn“); scanf(“%lf%lf%lf“, ,26,【例3.7】求一元二次方程的根程序续,else printf(“两复根分别是: %7.5f+%7.5fI, %7.5f-%7.5fIn“, re, fabs(im), re, fabs(im); else /* a

14、= 0.0 */ if (b != 0.0) printf(“单根 %7.5fn“, -c/b); else if (!c) printf(“方程同义反复.n“); else printf(“方程矛盾.n“); ,27,3.3.2 多路按值选择结构,switch语句描述多路按值选择结构。 switch语句的一般形式为: switch (表达式) case 常量表达式1: 语句序列1 case 常量表达式2: 语句序列2 . case 常量表达式n: 语句序列n default : 语句序列n+1 ,28,switch 语句执行过程,说明:若遇到break语句,则直接转向switch出口,29,

15、char choice; printf(“Enter choice !(A, B, C, .n“); scanf(“%c“, 如输入字符B ,则程序的执行将输出: B chosen! C chosen! default chosen!,【例3.8】输入选择,输出相应的选择名称,30,switch 语句说明,1. switch后面括号内的表达式只限于是整型表达式、字符型表达式或枚举型表达式。 当表达式的值与某一个“case 常量表达式”的值相等时,就执行case后面的语句,只要未遇到break语句或goto语句就一直向下执行,直至switch语句出口。 只有当所有条件都不匹配时,才执行defau

16、lt后面的语句序列。 每一个case的常量表达式的值必须互不相同,并与switch后面括号内的表达式值的类型相一致。 语句序列由任意条合法的语句构成,也可以没有语句。,31,switch 语句break语句,break作用:控制转向switch语句的后继语句,即跳 出Switch语句。 【例3.9】根据天气情况,安排活动。 int w_con; /* 天气情况变量定义 */ printf(“天气如何? 1:晴天, 2:多云, 3:下雨 “); scanf(“%d“, ,32,【例3.10】计算,switch (int) (x+0.5) case 1: y = sin(x); break; case 2: case 3: case 4: y = log(

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

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

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