第3章程序控制结构.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《C语言程序设计》2019/12/20第3章程序控制结构1C语言程序设计第3章程序控制结构《C语言程序设计》2019/12/20第3章程序控制结构2【学习目标】了解顺序结构重点掌握选择结构中if语句的使用掌握switch语句的使用重点掌握循环结构中while、do-while、for语句的使用《C语言程序设计》2019/12/20第3章程序控制结构33.1顺序结构3.2选择结构3.3循环结构第3章程序控制结构3.4其它控制语句《C语言程序设计》2019/12/20第3章程序控制结构4C语言程序由若干条语句组成,每条语句以分号结束。表达式语句是C语言语句中最基本的语句,在表达式后面加一个分号,就构成了表达式语句。形式为:表达式;最典型的例子是由赋值表达式构成的赋值语句。如:x=3/*是赋值表达式*/x=3;/*是一个赋值语句*/3.1.1表达式语句3.1顺序结构《C语言程序设计》2019/12/20第3章程序控制结构5空语句是一个只由分号组成的语句。形式为:;空语句什么都不做,当程序中某个位置在语法上需要一条语句,但在语义上又不要求执行任何操作时,可在此处使用一条空语句。常用于循环语句中的循环体,表示循环体什么都不做。如:for(i=1;i=1000;i++);/*表示循环空转1000次,可用来延时*/3.1.2空语句3.1顺序结构《C语言程序设计》2019/12/20第3章程序控制结构6复合语句是用花括号括起来的、若干条语句组成的语句块,又称为分程序,在语法上等价于一条语句。花括号内的语句组可以由任何合法的C语言语句组成,可以是说明语句、表达式语句,也可以是复合语句,若有说明语句,应该写在可执行语句的前面。形式为:{[说明语句]语句组;}当程序中某个位置在语法上只允许一条语句,但实际上要执行多条语句才能完成某个操作时,可使用复合语句。复合语句常出现在选择、循环语句中作为被控制的内嵌语句。注意:在编程时一定要特别注意花括号的配对使用,若左、右花括号符的数目不匹配,会出现编译错误。3.1.3复合语句3.1顺序结构《C语言程序设计》2019/12/20第3章程序控制结构73.1顺序结构3.2选择结构3.3循环结构第3章程序控制结构3.4其它控制语句《C语言程序设计》2019/12/20第3章程序控制结构83.2选择结构•选择结构:根据条件的值来判断程序的流向。•C语言中,提供两类选择控制语句:if语句:单分支、双分支和多分支switch语句:多分支P54《C语言程序设计》2019/12/20第3章程序控制结构93.2选择结构1.单分支if语句if语句的三种形式:形式:if(表达式)语句作用:当表达式为真(非0)时,执行表达式后面的语句,否则绕过该语句,而执行其后面的语句。表达式语句假真P54《C语言程序设计》2019/12/20第3章程序控制结构103.2选择结构其中:(1)条件表达式可以是任意的数值、字符、关系表达式或逻辑表达式,非0表示真,0表示假。条件表达式必须用圆括号括起来。(2)语句可以是一条简单语句或一条复合语句。1.单分支if语句P54《C语言程序设计》2019/12/20第3章程序控制结构113.2选择结构【例3-1】从键盘上输入两个整数,将它们从小到大排列,即若第一个数大于第二个数则交换。分析:交换需借助于第三个变量间接交换。if(ab){t=a;a=b;b=t;}abt①②③334341.单分支if语句P55《C语言程序设计》2019/12/20第3章程序控制结构123.2选择结构程序:#includestdio.hvoidmain(){inta,b,t;printf(请输入a和b的值:);scanf(%d%d,&a,&b);if(ab){t=a;a=b;b=t;}printf(%d%d\n,a,b);}1.单分支if语句P55《C语言程序设计》2019/12/20第3章程序控制结构133.2选择结构2.双分支if语句形式:if(表达式)语句1else语句2作用:当表达式为真(非0)时,执行语句1,否则执行语句2。表达式语句2假真语句1P55《C语言程序设计》2019/12/20第3章程序控制结构143.2选择结构【例3-2】从键盘上输入两个整数,求最大值。程序代码如下:#includestdio.hvoidmain(){intx,y,max;printf(请输入两个数:);scanf(%d%d,&x,&y);if(xy)max=x;elsemax=y;printf(最大值为%d\n,max);}2.双分支if语句P56《C语言程序设计》2019/12/20第3章程序控制结构153.2选择结构思考:若要使变量max存放x、y中的大者,变量min存放x、y中的小者,分析下面程序段是否正确?为什么?if(xy)max=x;min=y;elsemax=y;min=x;{{}}2.双分支if语句P56P56《C语言程序设计》2019/12/20第3章程序控制结构163.2选择结构【例3-3】计算分段函数310cos100sinxxxy00xx用双分支if语句实现:if(x)//if(x)与if(x!=0)含义相同y=sin(x)+100;elsey=cos(x)-10*x+3;2.双分支if语句P56《C语言程序设计》2019/12/20第3章程序控制结构173.2选择结构【例3-3】计算分段函数310cos100sinxxxy00xx用单分支if语句实现:/*不管x取值为多少,先进行表达式计算*/y=cos(x)-10*x+3;if(x)/*判断若x不等于0,则再覆盖先前计算的值*/y=sin(x)+100;2.双分支if语句P57《C语言程序设计》2019/12/20第3章程序控制结构183.2选择结构【例3-3】计算分段函数310cos100sinxxxy00xx思考:将上述单分支if语句中两语句次序调换一下,是否也能实现题目要求?为什么?if(x)y=sin(x)+100;y=cos(x)-10*x+3;2.双分支if语句P57P57《C语言程序设计》2019/12/20第3章程序控制结构193.2选择结构3.多分支if语句形式:if(表达式1)语句1elseif(表达式2)语句2┆elseif(表达式n)语句nelse语句n+1表达式2表达式ntruefalse语句n语句n+1语句2语句1…表达式1falsefalsetruetrue作用:当表达式1的值为真时,执行语句1;否则判断当表达式2的值为真时执行语句2;依此类推,若表达式的值都为假,则执行语句n+1。P57《C语言程序设计》2019/12/20第3章程序控制结构203.2选择结构注意:(1)对于选择分支结构,不管有几个分支,程序只执行第一个满足条件的分支,其余分支不再执行。(2)else与if之间要有空格,不能写成elseif。(3)条件表达式应该写在if后面,else后面不能直接写条件。3.多分支if语句P57《C语言程序设计》2019/12/20第3章程序控制结构213.2选择结构【例3-4】根据百分制成绩score,决定对应的五级制评定:大于等于90为A级,80分及以上且90分以下为B级,70分及以上且80分以下为C级,60分及以上且70分以下为D级,60分以下为E级。if(score=90)printf(%disA!\n,score);elseif(score=80&&score90)printf(%disB!\n,score);elseif(score=70&&score80)printf(%disC!\n,score);elseif(score=60&&score70)printf(%disD!\n,score);elseprintf(%disE!\n,score);3.多分支if语句P58《C语言程序设计》2019/12/20第3章程序控制结构223.2选择结构3.多分支if语句思考:下列两种方法是否也能实现上述题目要求?为什么?方法一:if(score=90)printf(%disA!\n,score);elseif(score=80)printf(%disB!\n,score);elseif(score=70)printf(%disC!\n,score);elseif(score=60)printf(%disD!\n,score);elseprintf(%disE!\n,score);方法二:if(score=60)printf(%disD!\n,score);elseif(score=70)printf(%disC!\n,score);elseif(score=80)printf(%disB!\n,score);elseif(score=90)printf(%disA!\n,score);elseprintf(%disE!\n,score);P58P58《C语言程序设计》2019/12/20第3章程序控制结构233.2选择结构if语句的嵌套是指if或else后面的语句本身又是一个if语句。例如:if(条件表达式1)if(条件表达式11)语句11else语句12elseif(条件表达式2)语句21else语句224.if语句的嵌套注意:(1)在if语句的嵌套中,为了增强程序的可读性,建议采用锯齿状的书写形式。(2)对于if语句的嵌套,C语言规定:else总是与它前面最近的一个没有配对的if配对。P58《C语言程序设计》2019/12/20第3章程序控制结构243.2选择结构4.if语句的嵌套【例3-5】计算分段函数:#includestdio.hvoidmain(){intx,y;scanf(%d,&x);if(x0)y=-1;elseif(!x)/*if(!x)与if(x==0)含义相同*/y=0;elsey=1;printf(x=%d,y=%d\n,x,y);}P59《C语言程序设计》2019/12/20第3章程序控制结构253.2选择结构4.if语句的嵌套思考:下面几个程序段,是否能实现上述题目要求?为什么?程序段1:if(x=0)if(x0)y=1;elsey=0;elsey=-1;程序段2:y=-1;if(x!=0)if(x0)y=1;elsey=0;程序段3:y=-1;if(x!=0){if(x0)y=1;}elsey=0;P59P59《C语言程序设计》2019/12/20第3章程序控制结构263.2选择结构3.2.2switch语句形式:switch(表达式){case常量表达式1:语句组1;[break;]case常量表达式2:语句组2;[break;]┆case常量表达式n:语句组n;[break;][default:语句组n+1]}执行顺序:当表达式的值与某个常量表达式的值相等时,则执行该常量表达式后面相应的语句,若使用了break,则执行完该语句后便退出switch语句;否则,还要依次执行其后面的各条语句。若找不到相匹配的常量表达式,则执行default后面的语句。必须为整型或字符型P60《C语言程序设计》2019/12/20第3章程序控制结构273.2选择结构3.2.2switch语句计算表达式值常量表达式1语句组1break常量表达式2语句组2break常量表达式n语句组nbreakdefault语句组n+1……真真真假假假有有有有无无无无P60《C语言程序设计》2019/12/20第3章程序控制结构283.2选择结构3.2.2switch语句注意:(1)switch后的表达式要用圆括号括起来;内部所有语句整个用花括号括起来;case和其后的常量表达式之间必须有空格隔开;case和default子句的冒号后允许有多条语句,可以不使用花括号。(2)switch后的表达式值与case后的常量表达式值类型要一致,只能为整数或字符。(3)同一个switch语句中,任意两个

1 / 63
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功