第四章程序控制结构精选文档.ppt
《第四章程序控制结构精选文档.ppt》由会员分享,可在线阅读,更多相关《第四章程序控制结构精选文档.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章程序控制结构本讲稿第一页,共八十八页本讲稿第二页,共八十八页一、表达式语句n表达式语句是C语言最常见的语句,它由一个表达式加上一个分号“;”构成,语句格式如下:l表达式表达式;l任意一个表达式加上一个分号“;”均可构成表达式语句。l其中,赋值语句和函数调用语句是使用最多的表达式语句。第四章第一节本讲稿第三页,共八十八页一、表达式语句n1 1.赋值语句赋值语句l赋值语句是由赋值表达式加上分号“;”构成的 表达式语句,其语法格式如下:u变量变量 赋值运算符赋值运算符 表达式表达式;l赋值语句的功能与赋值表达式相同,即具有计算和赋值双重功能,在顺序结构程序中担负着主要的 运算任务。第四章第一节
2、本讲稿第四页,共八十八页表达式语句的例子 x*=8;/*赋值表达式语句*/a=5,b=7,c=16;/*逗号表达式语句*/xy?x:y;/*条件表达式语句*/-a&+b&+c;/*逻辑表达式语句*/i+;/*算术表达式语句*/本讲稿第五页,共八十八页一、表达式语句l几点说明:u(1)赋值运算符除“=”外,还包含复合赋值运算符。例如:a-=a*a;u(2)赋值运算符右侧的表达式可以又是一个赋值表达式。例如:a=b=5*3;该语句等效于:a=(b=5*3);,进一步等效于:b=5*3;a=b;。u(3)赋值语句的功能与赋值表达式相同,但性质不同。赋值表达式是一种表达式,它可以出现在任何允许表达式出
3、现的地方,而赋值语句不能出现在表达式赋值语句不能出现在表达式中。例如:if(x=y+5)z=x;/*合法!*/if(x=y+5;)0)z=x;/*非法!*/第四章第一节本讲稿第六页,共八十八页一、表达式语句n2 2.函数调用语句函数调用语句l函数调用语句是由函数调用加上分号“;”构成的 表达式语句,其一般格式如下:u函数调用函数调用;l通过执行函数调用语句,实现所调用函数特定的 功能。例如:uprintf(Hello!);u执行该语句,调用printf函数输出字符串“Hello!”(不 包括双引号)。第四章第一节本讲稿第七页,共八十八页二、空语句n仅由一个分号构成的语句为空语句,即:n空语句只
4、是在逻辑上起到一个语句的作用,在编译时不产生任何指令,在执行时不产生任何操作。它常用于:l(1)构成标号语句,标识流程的转向点转向点;l(2)构成循环语句中的空循环体空循环体。第四章第一节本讲稿第八页,共八十八页n例如 while(getchar()!=n);n本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句.本讲稿第九页,共八十八页三、复合语句n用一对花括号 将多个语句括起来构成一个整体,该整体称为“复合语句”。即:语句1语句2 语句n第四章第一节本讲稿第十页,共八十八页三、复合语句n几点说明:l(1)复合语句在语法上是一个语句,而不是多个语句,故凡是单一语句可以
5、出现的地方均可以使用复合语句。l(2)一般将复合语句用在语法上是一个语句而相应操作需多条语句完成的场合。例如作为选择语句某分支内嵌的语句,或作为循环语句的循环体。l(3)复 合 语 句 内 的 各 条 语 句 都 必 须 以 分 号“;”结尾,而右花括号“”后面则不能有分号。l(4)复合语句又称为分程序,它可以有属于自己的数据说明部分。第四章第一节本讲稿第十一页,共八十八页四、控制语句n控制语句用于控制程序的流程。C语言有9种 控制语句:l条件选择语句:if语句;l开关分支语句:switch语句;l当循环语句:while语句;l直到循环语句:dowhile语句;l计数循环语句:for语句;l中
6、止本次循环语句:continue语句;l中止整个循环语句:break语句;l无条件转移语句:goto语句;l函数返回语句:return语句。第四章第一节本讲稿第十二页,共八十八页本讲稿第十三页,共八十八页一、顺序结构 从程序流程的角度来看,程序可以分为三种基本 结构:顺序结构 选择结构 循环结构 这三种基本结构可以组成所有的各种复杂程序。顺序结构是主要由说明语句、表达式语句、函数 调用语句、空语句和复合语句等组成的一种顺序顺序 执行执行的程序结构。本讲稿第十四页,共八十八页一、顺序结构n顺序结构是最简单的程序结构。按照解决问题的顺序编写相应的语句,程序运行时自上而下依次执行语句,这种程序结构称
7、为顺序结构。顺序结构的流程图如图4-1所示。第四章第二节图图4-1 4-1 顺序结构流程图和顺序结构流程图和N-SN-S图图本讲稿第十五页,共八十八页一、顺序结构n一个典型的顺序结构程序由以下三个部分组成:l(1)使操作对象获得原始数据;l(2)进行运算;l(3)输出运算结果。n对应的实现语句通常是输入函数调用语句、赋值语句和输出函数调用语句。n下面给出几个顺序结构程序设计的例子。第四章第二节本讲稿第十六页,共八十八页l例4-4求方程ax2+bx+c=0的根。a、b、c由键盘输入,a0且b2-4ac0。l假设所输入的系数a、b、c已保证a0且b2-4ac0,则一元二次 方 程 两 个 实 根
8、可 直 接 由 求 根 公 式 求 出,求根公式如下:顺序结构举例第四章第二节本讲稿第十七页,共八十八页顺序结构举例u由于求根公式中所用到的求平方根需调用数学函数库中的sqrt函数,必须在程序的开头加一条包含数学函数头文件math.h的命令:#include。值得说明的是,以后凡在程序中要用到C语言库函数,都应当用#include命令将相应头文件包含到程序中。第四章第二节本讲稿第十八页,共八十八页顺序结构举例u程序代码如下:程序代码如下:#include#include void main()float a,b,c,d,x1,x2;printf(Input a,b,c:);scanf(%f,%
9、f,%f,&a,&b,&c);/*输输入方程的三个系数的入方程的三个系数的值值*/d=b*b-4*a*c;/*求判求判别别式的式的值赋给值赋给d*/x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(x1=%.4fnx2=%.4fn,x1,x2);运行情况如下:运行情况如下:Input a,b,c:1,3,2 x1=-1.0000 x2=-2.0000本讲稿第十九页,共八十八页l例4-3 取一个16位的二进制数a的7、6、5、4四个位,如图4-2中加阴影的部分。u这是一个涉及位运算的程序。获得运算结果的步骤如下:(1)使a右移4位;(2)设置一个低
10、4位全为1,其余全为0的数,可用(0第二节本讲稿第二十页,共八十八页顺序结构举例u程序代码如下:程序代码如下:#include void main()unsigned a,b,c,d;scanf(%x,&a);/*以十六以十六进进制形式制形式输输入整数入整数a*/b=a4;c=(0第二节本讲稿第二十一页,共八十八页本讲稿第二十二页,共八十八页一、if语句nif语句用于实现选择结构。它判断给定的条件是否满足,并根据判断结果决定执行某个分支程序段。语言的if语句有三种基本格式。l1 1.单分支单分支if格式:if(表达式表达式)语句语句u该语句只有一个分支(称为“if分支”),其内嵌的语句仅当括号
11、内表达式的值为“真”(非0)时执行,如果表达式的值为“假”(0),则不执行if分支内嵌的语句。第四章第三节本讲稿第二十三页,共八十八页一、if语句u两点说明:(1)括号内的表达式语法上允许是任意合法的表达式,只要表达式的值为0,就代表“假”,表示条件不成立;只要表达式的值非0,都代表“真”,表示条件成立。(2)if分支内嵌的语句可以是单个语句,也可以是一个复合语句。第四章第三节本讲稿第二十四页,共八十八页一、if语句算法一程序代码如下:#include void main()int a,b,t;scanf(%d,%d,&a,&b);if(ab)t=a;a=b;b=t;/*a、b交交换值换值*/
12、printf(%d,%dn,a,b);运行情况如下:运行情况如下:3,5 3,55,3 3,5第四章第三节例例4.6从从键键盘盘输输入入两两个个整整数数,按按升升序序输输出这两个数。出这两个数。u对该问题可以设计三种不同的算法。算算法法一一如图4-4所示,其中第2步,仅当ab时需要将a、b两数交换以使ab,若是,直接先b后a输出 两数。用两个单分支if语句实现。算法二程序代码如下算法二程序代码如下:#include void main()int a,b,t;scanf(%d,%d,&a,&b);if(ab)printf(%d,%dn,b,a);第四章第三节图图4-6 4-6 例例4.64.6算
13、法二算法二本讲稿第二十六页,共八十八页一、if语句l2 2.双分支双分支ifif-elseelse格式:if(if(表达式表达式)语句语句1 1 elseelse 语句语句2 2u该语句有两个分支:if分支和else分支。如果括号内 表达式的值为“真”(非0),则执行if分支内嵌的语句1,否则执行else分支内嵌的语句2。第四章第三节本讲稿第二十七页,共八十八页一、if语句算法三程序代码如下:算法三程序代码如下:#include void main()int a,b,t;scanf(%d,%d,&a,&b);if(a第三节本讲稿第二十八页,共八十八页一、if语句l3 3.多分支多分支if-el
14、se-if 当有多个分支供选择时,可采用多分支if-else if语句,其一般格式如下:if(表达式表达式1)语句语句1else if(表达式表达式2)语句语句2else if(表达式表达式3)语句语句3 else if(表达式表达式n)语语句句nelse 语语句句n+1第四章第三节u其功能是:依次判断各分支中括号内表达式的值,一旦某分支的表达式值为“真”(非0),则执行该分支内嵌的语句;如果所有的表达式均为“假”(0),则执行 else 分支内嵌的语句n+1。本讲稿第二十九页,共八十八页一、if语句例4.7 输入百分制成绩,要求输出相应的五级制成绩。A 90-100 A 90-100 B 8
15、0-89 B 80-89 C 70-79 C 70-79 D 60-69 D 60-69 E 0-59 E 0-59u算法分析:用一个多分支if-else-if语句判断所输入的百分制成绩属于哪个分数段,进而输出相应的五级制成绩。第四章第三节本讲稿第三十页,共八十八页一、if语句程序代码如下:#include void main()int score;printf(nPlease input the score(0100):);scanf(%d,&score);if(score=90)printf(An);else if(score=80)printf(Bn);else if(score=70)
16、printf(Cn);else if(score=60)printf(Dn);else printf(En);请注意各分支条件的含义和出现顺序。请注意各分支条件的含义和出现顺序。第四章第三节本讲稿第三十一页,共八十八页4.4.在使用在使用ifif语句中还应注意以下问题语句中还应注意以下问题(1)在三种形式的if语句中,在if关键字之后均为表达式。该表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。例如:if(a=5)语句;if(b)语句;都是允许的。只要表达式的值为非0,即为“真”。n如在if(a=5);中表达式的值永远为非0,所以其后的语句总是要
17、执行的,当然这种情况在程序中不一定会出现,但在语法上是合法的。本讲稿第三十二页,共八十八页又如,有程序段:if(a=b)printf(%d,a);else printf(a=0);n不是比较a和b是否相等,而是将b赋值给a,然后测a。n本语句的语义是,把b值赋予a,如为非0则输出该值,否则输出“a=0”字符串。这种用法在程序中是经常出现的。本讲稿第三十三页,共八十八页(2)在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。(3)在if语句中,所有的语句应为单个语句,如果要执行一组(多个)语句,则必须把这一组语句用 括起来组成一个复合语句。但要注意的是在之后不能再加分号。例:例
18、:if(ab)a+;b+;else a=0;b=10;if(ab)a+;b+;else a=0;b=10;本讲稿第三十四页,共八十八页一、if语句l4 4.if语句的嵌套语句的嵌套当当ifif语句中的执行语句又是语句中的执行语句又是ifif语句时,则构成了语句时,则构成了if if 语句嵌套的情形。语句嵌套的情形。其一般形式可表示如下:其一般形式可表示如下:if(if(表达式表达式)if if语句;语句;或者为或者为:if(if(表达式表达式)if if语句;语句;else else if if语句;语句;在嵌套内的在嵌套内的ifif语句可能又是语句可能又是if-elseif-else型的,这
19、将会出现多个型的,这将会出现多个ifif和多个和多个elseelse重叠的情况,这时要重叠的情况,这时要特别注意特别注意ifif和和elseelse的的配对配对问题。问题。为了提高程序的可读性,建议程序的书写格式采用为了提高程序的可读性,建议程序的书写格式采用“按层缩进按层缩进”的方式。的方式。第四章第三节本讲稿第三十五页,共八十八页例如:例如:if(if(表达式表达式1)1)if(if(表达式表达式2)2)语句语句1 1;else else 语句语句2 2;n其中的其中的elseelse究竟是与哪一究竟是与哪一个个ifif配对呢配对呢?应该理解为:应该理解为:if(if(表达式表达式1)1)
20、if(if(表达式表达式2)2)语句语句1 1;else else 语句语句2 2;还是应理解为:还是应理解为:if(if(表达式表达式1)1)if(if(表达式表达式2)2)语句语句1 1;else else 语句语句2 2;n为了避免这种二义性,语言规定,为了避免这种二义性,语言规定,else else 总是与它前面总是与它前面最近最近的的ifif配对,因此对上配对,因此对上述例子应按前一种情况理解。述例子应按前一种情况理解。n即,表达式即,表达式1 1成立且表达式成立且表达式2 2不成立时执行语句不成立时执行语句2 2本讲稿第三十六页,共八十八页例例 函数:函数:(1)if(x0)y=-
21、1;else if(x=0)y=0;else y=1输入x开始 X=0)if(x0)y=1;else y=0;else y=-1;(3)y=-1;if(x!=0)if(x0)y=1;else y=0;(4)y=0;if(x=0)if(x0)y=1;else y=-1;本讲稿第三十七页,共八十八页其一般形式为:其一般形式为:switch(switch(表达式表达式)case case 常量表达式常量表达式1:1:语句语句1;1;case case 常量表达式常量表达式2:2:语句语句2;2;case case 常量表达式常量表达式n:n:语句语句n;n;default:default:语句语句n
22、+1;n+1;功能功能:(1 1)计算表达式的值,并逐个与其后的常量表达式值相比较。)计算表达式的值,并逐个与其后的常量表达式值相比较。(2 2)当表达式的值与某个常量表达式的值相等时,即执行其后所有的语句)当表达式的值与某个常量表达式的值相等时,即执行其后所有的语句(3 3)如表达式的值与所有)如表达式的值与所有casecase后的常量表达式均不相同时,则执行后的常量表达式均不相同时,则执行defaultdefault后的语句。后的语句。二、switch语句nswitch语句是语言提供的多分支选择结构的另一种形式,它根据一个表达式的不同取值来实现对语句是语言提供的多分支选择结构的另一种形式,
23、它根据一个表达式的不同取值来实现对分支的选择。分支的选择。本讲稿第三十八页,共八十八页二、switch语句l例例4 4.9 9 输输入入五五级级制制成成绩绩,要要求求输出相应的百分制成绩段。输出相应的百分制成绩段。void main()char grade;scanf(%c,&grade);switch(grade)case A:printf(“90100n);case B:printf(“8089n);case C:printf(“7079n);case D:printf(6069n);case E:printf(第三节说明:说明:(1)switchswitch后面括号中的表达式后面括号中的
24、表达式可以是任何类型;可以是任何类型;(2)(2)各个各个casecase分支的常量表达式的类型分支的常量表达式的类型均要与均要与switchswitch后面表达式的类型一致。后面表达式的类型一致。(3 3)常量表达式中不能包含变量,)常量表达式中不能包含变量,而且各常量表达式的值互不相同,而且各常量表达式的值互不相同,否则会出现矛盾的错误。否则会出现矛盾的错误。(4 4)各个分支均允许内嵌多个语)各个分支均允许内嵌多个语句,而且可以不用句,而且可以不用 括起来。括起来。本讲稿第三十九页,共八十八页二、switch语句 void main()char grade;scanf(%c,&grade
25、);switch(grade)case A:printf(“90100n);case B:printf(“8089n);case C:printf(“7079n);case D:printf(6069n);case E:printf(第三节(5 5)各)各casecase和和defaultdefault子句的先后顺子句的先后顺序可以变动,而不会影响程序执行结果。序可以变动,而不会影响程序执行结果。(6)(6)执行完执行完casecase子句中的语句后,如子句中的语句后,如果不继续执行下面的关语句,可用果不继续执行下面的关语句,可用breakbreak语句跳出语句跳出switchswitch语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 章程 控制 结构 精选 文档
限制150内