资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2020/2/19,信息工程学院计算机技术教研室 耿 楠,#,1,顺序结构:是按照书写顺序依次执行的。,选择结构:是对给定的条件进行判断,再根据判断的结果决定执行哪一个分支。,循环结构:是在给定条件成立时反复执行某段程序。,第三讲 控制结构(一),2,选择结构的特点:,根据给定的条件判断执行何种操作;,选择结构的种类:,if,语句和,switch,语句,if,语句:,主要提供两个分支的选则;,switch,语句:,提供多分支的选则;,if,语句语法结构:,if,(条件),语句,1,;,else,语句,2,;,第三讲 控制结构(一),3,注意:,当语句,2,为空时,,else,可以省略,,if,语句形式变换为:,if,(条件),语句;,第三讲 控制结构(一),4,if,语句的嵌套:,当,if,语句中的语句,1,或语句,2,是一个含,if,语句的复合语句时,形成,if,语句的嵌套。,if,语句的形式:,1,第三讲 控制结构(一),2,注意,:,else,总是与同一语法层次中离它最近的尚未配对的,if,配对,用大括号将,if-else,语句结构括起来,5,/*-,形式一:程序,L3_4.C,功能:编写程序,输入一个,x,,按照函数要求输出,y,值。,-*/,#include,main(),int x,y;,scanf(%d,if(x0)y=-1;,else if(x=0)y=0;,else y=1;,printf(x=%d,y=%d n,x,y);,6,/*-,形式二:程序,L3_5.C,功能:编写程序,输入一,个,x,,按照函数要求输出,y,值。,-*/,#include,main(),int x,y;,scanf(%d,if(x=0),if (x0)y=-1;,else y=0;,else y=1;,printf(x=%d,y=%d n,x,y);,7,switch,语句,处理选择的分支较多问题:,switch,语句:,语法形式:,switch,(整型表达式),case,数值,1,:语句,1,;,break,;,case,数值,2,:语句,2,;,break,;,case,数值,n,:语句,n,;,break,;,default,:语句,n+1,;,也可以是字符型表达式,第三讲 控制结构(一),8,int x=20,n;,for(n=0;n4;n+),switch(n),case 0:,case 1:x-=5;,case 2:x-=6;,default:x+=7;,printf(%d,x);,20,9,结构化程序设计的基本结构:,顺序结构,选择结构,循环结构:给定条件成立时,反复执行某一个,程序段。,三种基本循环结构语句,while,语句,do-while,语句,for,语句,第四讲 控制结构(二),10,while,语句,while,语句的,一般形式,和,流程图,:,while,(条件),语句,while,语句的执行过程:,当条件成立时执行循环体中的语句,然后再次判断条件,重复上述过程,直到条件不成立时结束循环,while,语句的特点:,当一开始条件就不成立时,一次也不执行循环语句,第四讲 控制结构(二),11,do-while,语句,do-while,语句的,一般形式,和,流程图,:,do,循环体语句,while(,条件,),;,do-while,语句的,执行过程,:,执行循环体中的语句,然后判断条件,条件成立再执行循环体,重复上述过程,直到条件不成立时结束循环,do-while,语句的,特点,:,当一开始条件就不成立时,已经执行了一次循环语句,注意,:,while,(条件)后面的分号不要省!,第四讲 控制结构(二),12,for,语句,for,语句的,一般形式,和,流程图,:,for(,表达式,1,;条件;表达式,2),循环体语句,for,语句的,执行过程,:,1),执行,表达式,1,2),判断,条件,3),当条件成立时执行循环体中的,语句和表达式,2,4),重复第二、三步直到条件不成立结束循环,第四讲 控制结构(二),13,for,语句中的,表达式,1,:,用途:,一般,用于给循环前的某些变量赋初值,,超过一个语句用逗号间隔,for(,s=0,n=1,;n=100;n=n+1),注意:,如果在循环语句前已经赋过初值,,表达式,1,可以省略,但是其后的分号不能省略,例如:,上例,for,语句也可以改写为如下形式:,第四讲 控制结构(二),14,for,语句中的,表达式,2,:,用途,:用于在每次循环语句执行后修改循环变量,for(s=0,n=1;n=100;,n=n+1,),注意:,如果循环体语句中已经包含控制循环次数的内容,,表达式,2,可以省略,但表达式,2,前面的分号不能省略,例如:,for,语句可以变换如下:,第四讲 控制结构(二),15,#include,main(),int m,i;,for(i=0;i4;i+),m=5*(i=2)%4;,printf(%4d,m);,2 3 2 2,16,break,语句和,continue,语句,结束循环的方法:,一般情况:当循环条件不满足时,自动结束;,循环条件多于一个或需要中途退出循环时:使用,break,语句或,continue,语句;,break,语句的应用,用在,switch,语句中,用在循环体中:,在循环体中遇到,break,语句,立即结束循环,跳到循环体(一层)外,执行循环结构后面的语句,break,语句的一般形式:,break,;,第四讲 控制结构(二),17,continue,语句的应用:,用于结束,本次,循环,在循环体中遇见,continue,语句,则循环体中,continue,语句后面的语句不执行,接着进行下一次循环的判定。,continue,语句的一般形式:,continue,;,continue,语句只用于循环结构的内部,一般与,if,配合使用。,第四讲 控制结构(二),break,语句和,continue,语句,用在循环体中的作用是不同的:,continue,语句:,只取消本次循环的,continue,语句后面的内容,break,语句:,终止了整个循环过程,18,operators,name,note,+,加法运算符,a+b,-,减法运算符,a-b,*,乘法运算符,a*b,/,除法运算符,a/b,%,模运算符,a%b,-,负值运算符,-a,5.1,算数运算符与算数表达式,算术运算符,第五讲 运算符和表达式,19,注意事项:,模运算符(,%,):,要求运算符两侧,必须为整型,数据,如果不是整型数据可以采用,强制类型转换,。,第五讲 运算符和表达式,算术运算符的优先级,:,负值运算符优先级高于乘、除、模运算符;,乘、除、模运算符优先级高于加、减运算符;,当表达式中优先级相同时,按照运算符的结合性。,算术运算符的结合性,:从左往右算;,小括号,“,(),”,的优先级最高,20,operators,name,note,小于运算符,ab,=,小于等于运算符,a,大于运算符,ab,=,大于等于运算符,a=b,=,等于运算符,a=b,!=,不等于运算符,a!=b,关系运算符,5.,2,关系运算符与关系表达式,第五讲 运算符和表达式,21,两个数据在进行值的比较时,其结果不是成立就是不成立:其中成立为,“,真,”,,不成立为,“,假,”,。,关系运算的结果,仅产生两个值:,1,表示,“,真,”,,,0,表示,“,假,”,。,在,c,语言中,任何,非,0,值,为,“,真,”,,,0,值,为,“,假,”,第五讲 运算符和表达式,22,结合性:,“,从左往右,”,。,例如:,54,543,优先级:,关系运算符中,、,、,=,的优先级相等,,=,、,!=,优先级相等,且前者高于后者。,例如:,1=43,;,关系运算符的级别小于算术运算符,:,例如:,2+35-1,,运算次序为,+,、,-,、,第五讲 运算符和表达式,23,逻辑运算表示两个数据或表达式之间的逻辑关系。,C,语言提供的逻辑运算符有三种:,逻辑与运算符“,&”,、,逻辑或运算符“,”,、,逻辑非运算符“,!”,。,逻辑运算的结果也只有两个:“真”为,1,和“假”为,0,。,5.3,逻辑运算符与逻辑表达式,第五讲 运算符和表达式,24,若有,int x=0,y=8,z=9,w=10,则下列式子值分别为多少?,x&y,和,x|y,y&z,和,y|z,w=z,和,w=z=y,x+2|y-z&y=z,!(y|!x&(w=x),0,1,1,1,1,0,1,0,25,5.4,赋值运算符与赋值表达式,c,语言中最常见的,赋值运算符,是,“,=,”,,其作用是将赋值运算符右边的表达式赋予左边的变量。,形如:变量,=,表达式,称为,赋值表达式,。,赋值运算符的,结合性,为从右往左,其,优先级,低于算术运算符、关系运算符和逻辑运算符。,注意事项:,运算符,“,=,”,左边:必须是变量;,运算符,“,=,”,右边的表达式:计算完成后才参与赋值运算;,第五讲 运算符和表达式,26,复合赋值运算,算术运算符,“,+-*/%,”,和赋值运算符,“,=,”,结合起来,形成复合赋值运算符。如下所示:,+=,:加赋值运算符。如,a+=3+1,,等价于,a=a+(3+1),。,-=,:减赋值运算符。如,a-=3+1,,等价于,a=a-(3+1),。,*,=,:乘赋值运算符。如,a*=3+1,,等价于,a=a*(3+1),。,/=,:除赋值运算符。如,a/=3+1,,等价于,a=a/(3+1),。,%=,:取余赋值运算符。如,a%=3+1,,等价于,a=a%(3+1),。,复合赋值运算符的结合性和优先级等同于简单的赋值运算符,“,=,”,。,第五讲 运算符和表达式,27,5.5,自增运算符与自增表达式,自增和自减运算符,是,c,语言所特有的(单目运算符),主要用于给一个变量加,1,或减,1,:,“,+,”,自增运算符:,a+,+a,都等价于,a=a+1;,“,-,”,自减运算符:,a-,-a,都等价于,a=a-1;,“,+,”,与,“,-,”,前置与后置的区别,:,前置运算,:变量先作自增或自减运算,再将变化后的变量值参加表达式中的其他运算,后置运算,:变量先参加表达式中的其他运算,再做自增或自减运算,第五讲 运算符和表达式,28,5.6,逗号运算符与逗号表达式,逗号运算符,主要用于连接表达式;,例如:,a=a+1,b=3*4,用逗号运算符连接起来的表达式称为,逗号表达式,一般形式为:表达式,1,,表达式,2,,,,,表达式,n,逗号表达式的,运算过程,:,先算表达式,1,,再算表达式,2,,,.,依次算到表达式,n,。,整个,逗号表达式的值,:,最后一个表达式的值,。,逗号表达式的,结合性和优先级,:,结合性:从左到右。,优先级:是所有运算符中级别最低的;,第五讲 运算符和表达式,29,#include,main(),int x=5,y=6,z=7;,x+=x-7;,y*=y-4,z=(y=y-2,x=y+x,x*2+5);,printf(%d,%d,%dn,x,y,z);,13,10,31,30,一般形式为,:,表达式,1,?,表达式,2,:,表达式,3,含义:,如果表达式,1,成立,则表达式,2,的值是整个表达式的值,否则,表达式,3,的值是整个表达式的值,第五讲 运算符和表达式,5.7,条件运算符与条件表达式,31,条件运算符的结合性和优先级:,结合性,:从右往左。,优先级,:高于赋值运算符和逗号运算符,低于关系、算术运算符和逻辑运算符。,例如,:,第五讲 运算符和表达式,32,C,语言的运算符优先级:,第五讲 运算符和表达式,
展开阅读全文