资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,1,第,2-2,讲 程序设计的结构与语句,C,语言中的一些运算符与表达式,分支结构,if-else,语句,else-if,语句,switch,语句,循环结构,while,语句,do-while,语句,for,语句,1第2-2讲 程序设计的结构与语句 C语言中的一些运算符与,2,2.1,顺序结构设计,例,2_1,,读取圆的半径,打印圆的周长和面积。,用常量值,3.14159,。,22.1 顺序结构设计例2_1,读取圆的半径,打印圆的周长,3,一、,C,语句与程序块,在表达式之后加上一个分号“,;,”,就形成了语句。,C,语言中,分号,是语句的结束符。,用一对花括号“ ”把一组声明和语句括在一起就构成了一个,复合语句,。右花括号用于结束程序块,其后不需要分号。,C,语言的语句用来向计算机系统发出操作指令。,C,语句都是用来完成一定操作任务的。,C,语句可分为以下,5,类:,3一、C语句与程序块,4,1),控制语句,完成一定的控制功能。,C,只有,9,种,if-else,for,while,do-while,continue,break,switch,goto,return,2),函数调用语句,如:,printf( Hello,Word! );,3),表达式语句,如赋值语句:,a,3,;,4),空语句,:,;,即只有一个分号的语句,5),复合语句:, ,41) 控制语句,完成一定的控制功能。C只有9种,5,二、,C,语言的运算符,可分为多种类型,包括:,1,)算术运算符,( + - * / % ),2,)自增和自减运算符,( + - ),3,)赋值运算符,( =,及其扩展赋值运算符,),4,)条件运算符,( ? : ),5,)关系运算符,( = & | ),9,)求字节数运算符,( sizeof() ),10,)其它运算符:,逗号运算符(,)、强制类型转换(类型),5二、 C语言的运算符,6,三、算术运算符与算术表达式,基本的算术运算符,、*、,/,、(取模运算符,两侧均应为整型数据),例如,,取模运算符,不能应用于,float,或,double,类型,/,运算符,当它的两个操作数都是整数时,结果为整数。当操作数为实数时,应防止某些计算错误的发生。,a=1/3;,b=a * 3;,10%4,/,结果是,2,4%2,/,结果是,0,5/2,/,结果是,2,b = ?,a=1.0/3.0;,b=a * 3.0;,6三、算术运算符与算术表达式10%4,7,表达式就是操作数和运算符的组成系列,最终推导出一个值。,a * b/c - 2.5 + A,算术运算符的优先级与结合性,二元运算符、具有相同的优先级,它们的优先级比*、,/,和的低,而*、,/,和的优先级又比一元运算符和的低。,算术运算符的结合方向:“自左向右”,强制类型转换运算符,将一个表达式转换成所需类型,(,类型名,)(,表达式,),(int)(a+b) (int)a + b (float)(5%3),7表达式就是操作数和运算符的组成系列,最终推导出一个值。,8,例,2_2,,使用强制转换来计算下面等式,8例2_2,使用强制转换来计算下面等式,9,自增、自减运算符,使变量的值增,1,或减,1,。注意:在语句中前缀(,+n,)和后缀(,n+,)运算符的效果是不同的。,+n, - - n,使用,n,之前,先使,n,的值加(减),1,n+, n - -,使用,n,之后,使,n,的值加(减),1,自增和自减运算符只能用于变量。,自增(减)运算符常用于循环变量、指针变量递增(减)的情况,对于一些易搞混的问题,请小心使用。,如,,n = 3,, 表达式:,(n+) + (n+) + (n+),的值,有的为,3+4+5=12,,而,TC,和,MSC,中为先,n,相加,再,n,自加,3,次,,n=6,printf(,“,%d, %d,”, n, n+);,i+j,,将解释为,(i+) + j,;,-i+,,将解释为,-(i+),int i=5, k, j;,k = +i;,printf( %d %dn , k, i );,j = k+;,printf( %d %dn , j, k );,结果为:,6 6,结果为:,6 7,9自增、自减运算符int i=5, k, j; 结果为:,10,四、赋值运算符与表达式,赋值(,=,)运算,将“,=”,号右边表达式的值赋给等号左边的变量。,当“,=”,两边数据类型不一致时,先将右边表达式的值转化为左边变量的类型再赋值。,复合“,=”,运算符,+=,、,-=,、 *,=,、,/=,、,%=,、,例:,a +=3,a = a+3,x *= y+8,x = x * ( y + 8 ),10四、赋值运算符与表达式,11,赋值表达式,一般形式为:,a,(v=5),中的,(v=5),也是一个赋值表达式,其中,v,的值为,5,,整个表达式的值也等于,5,。,赋值运算符按照“,自右而左,”的结合顺序,a= b= c= 0;,a = (b = (c = 0 ) );,a = (b = 4) + ( c = 6 ),a +=a -= a*a,a = a + (a = a a* a),11赋值表达式,12,五、逗号运算符与表达式,逗号运算符(,)又称为“顺序求值运算符”。用它将两个表达式连接起来,构成逗号表达式。其形式为:,表达式,1,,表达式,2,先求解表达式,1,,再求解表达式,2,,最终整个表达式的结果为表达式,2,的值。,a=3*5, a*4 /,结果为:,60,,赋值运算符的优先级高于逗号运算符,逗号表达式的扩展:,表达式,1,,表达式,2,,表达式,3,,,,表达式,n,逗号运算符在所有运算符中优先级最低,最常用于,for,循环语句中,12五、逗号运算符与表达式,13,2.2,选择结构程序设计,选择结构是三种基本结构之一,在大多数程序设计中都会包含它。,选择结构的作用是根据所指定的条件是否满足,决定从给定的两组操作中选择其一。,主要语句有:,if-else,else-if,switch,132.2 选择结构程序设计选择结构是三种基本结构之一,在,14,一、关系运算符与逻辑运算符,关系运算符,、,=,、,、,是,=,的互补,=,的互补,=,是,!=,的互补,可以使用互补性来简化含有非或小于运算符的表达式:,!(x = y !(x y,!(x y) x = y) x 是 ,15,逻辑运算符,& |,!,由,&,和,|,连接的表达式,按从左到右的顺序进行求值,并且在知道结果值为真或假后立即停止计算。,运算符,&,的优先级比,|,的高,但都比关系运算符和相等性运算符的优先级低。,在关系或逻辑表达式中,如果关系为真,在表达式的结果值为,1,;如果为假,则结果值为,0,。,逻辑非运算符!的作用是将非,0,操作数转换为,0,,将操作数,0,转换为,1,。,以一般数值作为逻辑量参与运算时,非,0,为真,,0,为假。,如:,A,& ,B,其值为,true,(,1,),for ( i = 0; i lim -1 & (c = getchar() ) !=,n, +i ),si = c;,15逻辑运算符 for ( i = 0; i lim,16,真值表,16真值表,17,二、,条件运算符,( ? : ),类似于,if-then-else,型结构,实现简单的选择功能,表达式的形式:,表达式,1,?,表达式,2,:,表达式,3,先求表达式,1,,若表达式,1,的值为,true,,则求解表达式,2,,并以该值作为条件表达式的值;否则求解表达式,3,,并以该值作为条件表达式的值。,例:,( 2=,、, 0,,有两个不等的实根;,4),b,2,- 4,ac,=0 (,用,do-while,控制,),;,0!=1(,特例),;,求精、再完善、友好。,58二、简单算法举例,59,59,60,例,2_11,,求:,分析:,找到规律,第,1,项,初值为,1,;,第,2,项,分子为,1,,分母为,2,,符号为;,第,3,项,分子为,1,,分母为,3,,符号为;,确定初步框架、所需变量及初始化的值:,分母,deno=1,,,deno = deno +1,,与项号对应,,deno=100,符号,sign=1,,规律:,sign=(-1)*sign,项,term=1,,,term=sign*(1/deno),和,sum=0,,,sum = sum + term;,使用循环(,for,),,deno,从,1,做到,100,求精、完善、友好。,60例2_11,求:,61,61,62,例,2_12,,将数列,44 55 12 42 94 18 6 67,进行排序。,方法一: 冒泡排序(假设希望结果按升序排列),从第一个数比较起,依次比较相邻的两数,若前一个大于后一个,则将它的位置互换,直至第一轮结束为止。此时最后的必是最大的。,44 55,12 42 94 18 6 67,44,55 12,42 94 18 6 67,44,12,55 42,94 18 6 67,44,12,42,55 94,18 6 67,44,12 42,55,94 18,6 67,44,12 42 55,18,94 6,67,44,12 42 55,18,6,94 67,44,12 42 55,18,6,67,94,每一轮的排序方法基本相同,所不同的只是每轮的比较次数有所不同。,一般地,第,k,轮只需比较到,n+1-k,为止。如果第,k,轮比较时任何一对值都不需要交换,则说明第,k+1,轮及其后的各轮都已排序好,可以省去。,62例2_12,将数列44 55 12 42 94,63,方法二: 使用选择排序,(,又称比较排序,),方法对数组部分元素排序。,从待排序的数中选出最小的与第,1,个交换位置,再从剩余的待排序的数中选出最小的与第,2,个交换位置,,直到待排序的数只剩,1,个为止。,55 44,12 42 94 18 6 67,55,44 12,42 94 18 6 67,55 44,12 42,94 18 6 67,55 44,12,42,94,18 6 67,55 44,12,42 94,18,6 67,55 44,12,42 94 18,6,67,55 44 12 42 94 18,6 67,6,44 12 42 94 18,55,67,K=1(,记录较小元素的下标值,),K=2,K =,i,=0,K =,2,K =,2,K =,2,K =,6,K=6,63方法二: 使用选择排序(又称比较排序)方法对数组部分元素,64,三、算法的表示,传统的流程图,N-S,流程图,伪代码,1.,传统的流程图,一些常用的流程图符号:,起止框,输入输出框,处理框,判断框,流程线,连接点,三种基本结构,64三、算法的表示,65,2. N-S,流程图,顺序结构,选择结构,循环结构,B,A,p,成立,不成立,当,p1,成立,A,A,直到,p1,成立,652. N-S流程图BA,66,四、结构化程序设计方法,结构化程序设计的基本思路是,把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。,具体方法为:,1.,自顶向下,2.,逐步细化,3.,模块化设计,分而治之,用函数来实现,子模块一般不超过,50,行,便于组织、阅读。,划分模块是应注意子模块的独立性,即一个模块完成一个功能,耦合性越少越好。,4.,结构化编码,正确使用高级语言编写三种结构。,66四、结构化程序设计方法,
展开阅读全文