C语言程序设计ppt课件 第4章.ppt
《C语言程序设计ppt课件 第4章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计ppt课件 第4章.ppt(59页珍藏版)》请在三一办公上搜索。
1、2022/11/16,华中科技大学计算机学院,1,C语言程序设计,The C Programming Language,华中科技大学计算机学院曹计昌,2022/11/16,华中科技大学计算机学院,2,C语言程序设计,第4章 流程控制,2022/11/16,华中科技大学计算机学院,3,主要内容,4.1 C语句分类4.2 表达式语句4.3 复合语句4.4 if语句4.5 switch语句4.6 while语句4.7 for语句4.8 do-while语句4.9 goto语句和标号语句4.10 break语句、continue语句和return语句4.11 嵌套循环程序设计*4.12 推理机程序设计
2、,2022/11/16,华中科技大学计算机学院,4,C语句,4.1 C语句分类,说明语句,可执行语句,变量说明、函数说明、常量定义、类型定义、,表达式语句、复合语句、选择语句(if 和 switch)、循环语句(while, do-while和for)、转移语句(break, continue, goto和return)、标号语句,2022/11/16,华中科技大学计算机学院,5,在任何C表达式的末尾加一个分号都可以构成一个语句,即表达式语句。表达式语句的一般形式:表达式;其中,“;”是C语句不可缺少的组成部分,它表示一个语句的结束。 在C语言中,赋值、输入和输出都由表达式语句实现。例:x =
3、 y + 1x = y + 1; x += yx += y; i = j = ki = j = k; printf(”hello”)printf(”hello”); scanf(”%d”, ,4.2 表达式语句,2022/11/16,华中科技大学计算机学院,6,再如:a b;也是一个表达式语句,但是由于在表达式求值的过程中并没有改变任何变量的值,这样的表达式语句并没有实际意义。仅由一个分号构成的语句称为空语句,即:;它不执行任何操作。在程序设计中,如果某处在语法上需要一条语句,而在实际功能上不需要执行任何操作时,可以使用空语句。,4.2 表达式语句(续),2022/11/16,华中科技大学计算
4、机学院,7,1复合语句的一般形式用花括号“”括起来的一组语句,语法上等价于单个语句,语法格式为:说明部分语句部分说明部分可包含0至多个说明语句;语句部分可包含0至多个执行语句。复合语句又称块。函数体是一个块。,4.3 复合语句,2022/11/16,华中科技大学计算机学院,8,例4.3:不含说明语句的复合语句 t = a; a = b; b = t;例4.4:包含说明了语句的复合语句。int t ;t = a; a = b; b = t;,复合语句举例,2022/11/16,华中科技大学计算机学院,9,2嵌套的复合语句复合语句中包含复合语句,从而形成嵌套的复合语句。例如:int a = 0,
5、b = 1;int a=1;printf(”a=%dn”, a);printf(”b=%dn”,b += 1);printf(“a=%dn”,a);printf(“b=%dn”,b);,4.3 复合语句(续),2022/11/16,华中科技大学计算机学院,10,3复合语句的用途复合语句在程序设计中主要有以下两种用途:(1)用于语法上只允许出现单个语句而处理上需要执行多个语句的地方,例如作为if语句的子句及循环语句的循环体。(2)用于改变嵌套if-else语句的配对规则。此外,当需要说明临时使用的局部变量时,也可使用复合语句。,4.3 复合语句(续),2022/11/16,华中科技大学计算机学院
6、,11,1if 语句的一般形式if语句有两种形式:(1) if格式:if (表达式)语句1;(2) if-else格式:if (表达式)语句1;else语句2;,4.4 if语句,2022/11/16,华中科技大学计算机学院,12,2嵌套的if 语句1) 嵌套if语句的形式当if子句或else子句中又包含if 语句时,则形成嵌套的if语句。例如,可以用下面的一个嵌套的if语句求a,b,c三个数中最大值:if ( a b )if ( a c ) max = a; else max = c;elseif ( b c ) max = b; else max = c;,4.4 if语句(续),2022
7、/11/16,华中科技大学计算机学院,13,2)嵌套if 语句中else的配对规则对嵌套if语句中else与if的配对必须制定一个规则,否则会造成理解上的二义性。例如:if ( n 0 )if ( a b ) z = a;else z = b; 编译程序约定:else与其前面最靠近的还未配对的if配对,即内层优先配对原则。,4.4 if语句(续),2022/11/16,华中科技大学计算机学院,14,例4.6:解方程ax + b = 0,a和b从终端输入。#includevoid main(void)float a, b, x; printf(”input a,b:n”);scanf(”%f%f
8、”, ,3程序设计举例,2022/11/16,华中科技大学计算机学院,15,1. switch语句的形式switch语句的一般形式为:switch(表达式)case 常量表达式1:语句序列1;case 常量表达式2:语句序列2;case 常量表达式n:语句序列n;default: 语句序列n+1;,4.5 switch语句,2022/11/16,华中科技大学计算机学院,16,2. switch语句的使用要点使用switch语句时,第一要注意列出的case应能包括选择表达式所有的取值情况,如果不能全部包括,则应使用default子句处理余下的情况。第二应特别注意break在switch中的作用,
9、如果希望执行完某一case下的语句之后便跳出switch语句,则必须使用break或return转移语句。break跳出switch语句之后继续执行switch语句后面的一个语句(如果有),return语句则立即结束函数并返回到调用处(如果是主函数,则结束程序)。,4.5 switch语句(续),2022/11/16,华中科技大学计算机学院,17,例如:下面是一个不含转移语句的switch语句,注意观察该语句执行时的输出。i = 1;switch ( i )case 0:printf(%dt, i);case 1:printf(%dt, i+);case 2:printf(%dt, i+);c
10、ase 3:printf(%d, i+);default:printf(n);printf(%dn, i);,4.5 switch语句(续),输出:1 2 34,2022/11/16,华中科技大学计算机学院,18,例4.8:学生考试成绩按以下标准分等(x为学生考试分数):分数范围等级英文名90 x100excellent(优)80 x90good(良)60 x80middle(中)x60bad(差)输入某学生的考试分数,输出该学生的考试成绩的英文等级。要求用switch语句来实现。,3程序设计举例,2022/11/16,华中科技大学计算机学院,19,分析:switch语句可用来解决多分支问题,
11、但每个case后面的常量都是一个离散的值,不能表示一个数值范围。为此,将分数范围0,100每10分划为一段,则可划分为0,10),10,20),20,30),30,40),40,50),50,60),60,70),70,80),80,90),90,100)十个分数段。进一步对分数值进行除以10然后取整的处理,可以发现上面同一分数段内的分数经处理后得到相同的一个整数。比如,0,10)范围内的数除以10然后取整,结果都是0;10,20)范围内的数除以10然后取整,结果都是1;这样一来,就可以用一个离散值代表一个分数段内的所有分数值。p98 例4.8源程序代码 ex4.8.c。,3程序设计举例(续)
12、,2022/11/16,华中科技大学计算机学院,20,99 例4.9:输入某年某月,输出该月的天数。注意:switch语句允许多种情况执行相同的语句,执行相同语句的case可以写成一行,其间可以用空格或制表符分隔,但不能用逗号分隔。例如:case 4:case 6:case 9:case 11:days=30;正确case 4,case 6,case 9,case 11:days=30;错误case 4,6,9,11:days=30;错误,4.5 switch语句(续),2022/11/16,华中科技大学计算机学院,21,1. while语句的形式while语句的一般形式为:while (表达
13、式) 语句while语句流程图:,4.6 while语句,2022/11/16,华中科技大学计算机学院,22,i = 0;while (i 5)printf(”i=%dt”,i);i+;printf(”i=%dn”,i); 注意:如果循环体中没有改变循环变量的值,或循环变量值的变化不能使循环控制表达式的结果为0,则循环将永不终止(通常称之为“死循环”)。如果循环控制表达式的值一开始就为0(条件为假),则循环体一次都不执行。解释: p101-p102 例4.11,例4.12,例4.13,例4.10 while循环语句示例,2022/11/16,华中科技大学计算机学院,23,例4.14:将来自标准
14、输入文件的正文复制到标准输出文件,每次输入和复制一个字符。分析:以EOF(系统常量,值为-1)为结束标志的字符流称为一个正文,可以包含空白字符,例如空格符、制表符和换行符。根据题目要求,输入函数应使用getchar(每次输入一个字符),输出函数应使用putchar(每次输出一个字符);复制过程是一个重复地调用getchar读和调用putchar写的过程,因此程序的流程结构是一个循环语句;读入的字符是否为EOF则是循环控制条件。,2程序设计举例,2022/11/16,华中科技大学计算机学院,24,例4.14:算法步骤:(1) 调用getchar读入一个字符并赋给字符变量c。(2) 如果c不是EO
15、F,则执行(3);否则结束执行。(3) 输出c;(4) 读下一字符并赋给字符变量c;(5) 转步骤(2)。p102 例4.14源程序代码 ex4.14.c,2程序设计举例(续),2022/11/16,华中科技大学计算机学院,25,例4.15 输入一个C程序(一段正文),按原来格式复制输出,复制过程中删去输入程序中所有的注释。分析:为了删去C程序中所有的注释,关键在于如何区分注释部分和需要复制的部分。为此,可将复制过程划分为4种状态:复制状态(COPY)、开始注释状态(START)、注释状态(COMMENT)和结束复制状态(END),初始状态为COPY。每种状态下的处理方法如下:(1) 在COP
16、Y状态下,若读入字符为/(可能为注释开始符号),则将状态改为START;否则将读入的字符复制到输出。,2程序设计举例(续),2022/11/16,华中科技大学计算机学院,26,(2) 在START状态下,若读入字符为*(确定注释开始),则将状态改为COMMENT;否则(不是注释),将上一次读入的字符/复制到输出;然后检查本次读入的字符是否为/,若是,则状态保持START不变,否则将本次读入的字符复制到输出并将状态改为COPY。(3) 在COMMENT状态下,若读入字符为*(可能为注释结束符号),则将状态改为END。(4) 在END状态下,若读入字符为/(确定注释结束),则将状态恢复成COPY;
17、否则(不是注释结束),如果读入字符是*,则状态保持END不变,否则将状态改为COMMENT。(p104 源程序4.15),2程序设计举例(续),2022/11/16,华中科技大学计算机学院,27,1. for语句的形式for语句的一般语法形式表示为:for(e1;e2;e3) s for语句流程图:等价于:e1;while(e2) s;e3;,4.7 for语句,2022/11/16,华中科技大学计算机学院,28,使用for语句时须注意表达式e1,e2,e3的用法:(1)三个表达式可以全部或部分缺省,但无论缺省e1,e2或e3,它们之间的分号不能省。(2)缺省e1和e3时的for语句形如for
18、(;e2;)s,等价于一个形如while (e2) s的while语句。(3)缺省e2时的for语句for(e1 ; ; e3) s和三个表达式都缺省的for语句for(; ;)s都是无限循环语句。被省略的e2缺省值恒为非0(e1和e3没有缺省值)。,4.7 for语句(续),2022/11/16,华中科技大学计算机学院,29,例4.16:for循环语句示例。int i;for(i = 1; i 4; i+)printf(”i=%d s=%dn”, i, 2 * i); 几种等价的形式: i = 1;for(; i 4; i+)printf(”i=%d s=%dn”, i, 2 * i);或f
19、or( i = 1; i 4;)printf(”i=%d s=%dn”, i, 2 * i);i+;,4.7 for语句(续),2022/11/16,华中科技大学计算机学院,30,或i = 1;for(; i 4;)printf(”i=%d s=%dn”, i, 2 * i);i+;或i = 1;for(; ;)printf(”i=%d s=%dn”, i, 2 * i);i+;if (!(i 4) break;,4.7 for语句(续),2022/11/16,华中科技大学计算机学院,31,例4.19:输入一批整数,以0为结束。输出其中最大的一个值。分析:从若干个数中找出最大的一个数可用打擂台
20、的方法,即两两相比,大者留下;当所有的数比完时留下的那个数为最大。比较过程采用每次输入一个数立即与上一次留下的那个较大的数比较的方法,因此程序中只需用两个变量:一个变量x用于保存每次输入的一个数据,另一个变量max用于保存每两个数相比中较大的一个数。这种方法可以用于从任意多个输入数据中找出其中的最大值。,2程序设计举例,2022/11/16,华中科技大学计算机学院,32,例4.19:算法步骤:(1) 输入第一个数(x)。(2) 置最大数max初值为x。(3) 如果x不等于0,则执行(4);否则,执行(7)。(4) 输入下一个数(x)。(5) 如果max x,则将max修改为x(赋值)。(6)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计ppt课件 第4章 语言程序设计 ppt 课件
链接地址:https://www.31ppt.com/p-1375820.html