C-3(运算符、控制语句)课件

上传人:我*** 文档编号:144913668 上传时间:2020-09-14 格式:PPT 页数:60 大小:762KB
返回 下载 相关 举报
C-3(运算符、控制语句)课件_第1页
第1页 / 共60页
C-3(运算符、控制语句)课件_第2页
第2页 / 共60页
C-3(运算符、控制语句)课件_第3页
第3页 / 共60页
C-3(运算符、控制语句)课件_第4页
第4页 / 共60页
C-3(运算符、控制语句)课件_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《C-3(运算符、控制语句)课件》由会员分享,可在线阅读,更多相关《C-3(运算符、控制语句)课件(60页珍藏版)》请在金锄头文库上搜索。

1、3G-嵌入式开发,C语言强化,蜚声腾茂教育科技,作业简析,第一讲 C语言基础回顾,C语言概述 C语言的关键字 C语言基本数据类型 C语言的运算符(% + - , ?:) C语言控制语句,学习目标: 熟练应用各种算术运算符的优先级和结合性 熟练应用各关系运算符的优先级和关系表达式值的判定 熟练应用各逻辑运算符的优先级和逻辑表达式值的判定 熟练应用赋值运算符的结合性和优先级 熟练应用自增/减运算符的作用、自增/减运算的前置方式和后置方式的区别 理解逗号表达式的作用及其值的计算 了解C语言的常用运算符的优先级,运算符的结合性和优先级,详见运算符.doc,逻辑运算符,| int j=0; if(+i0

2、)|(+j0) printf(“%d,%d”,i,j);,结果?,说明 逻辑运算符|两边的条件只要有一个为真,其结果就为真;(对于我们这道题来说后面就不计算了) 同理对于 printf(“+a=%d,b+=%dn”,+a,b+); printf(“a=%d,b=%dn”,a,b); printf(“a=%d,b-=%dn”,-a,b-); printf(“a=%d,b=%dn”,a,b); ,请写出下列代码的输出内容 include main() int a,b,c,d; a=10; b=a+; c=+a; d=10*a+; printf(“b,c,d:%d,%d,%d”,b,c,d); re

3、turn 0; ,答案:10,12,120,main( ) int m=5; if (m+5) printf(“m5”); else printf(“m=%d,”,m-); printf(“m=%d”,m-); ,运算结果: m=6,m=5,main( ) int m=5; if (+m5) printf(“m5”); else printf(“m=%d,”,m-); printf(“m=%d”,m-); ,运算结果: m5,练习,void main() int a=5,b=7,c; c=a+ +b; printf(“%d,%d,%dn”,a,b,c); ,运算结果: 6, 7, 12,说明C

4、贪心法 C 语言有这样一个规则:每一个符号应该包含尽可能多的字符。也就是说,编译器将程序分解成符号的方法是,从左到右一个一个字符地读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串已不再可能组成一个有意义的符号。这个处理的策略被称为“贪心法”,void main() int i=3,c; c=(+i)+ (+i)+ (+i); printf(“%dn”,c); ,练习,16,练习,void main() int i=8; printf(“%d,%d,%d,

5、%dn”,+i,-i,i+,i-); ,运算结果: 8, 7, 8, 8,逗号运算符和逗号表达式,逗号表达式的构成形式如下: 表达式1,表达式2,表达式n 逗号表达式的求解过程是:先求解表达式1,再求解表达式2,最后求解表达式n,且表达式n的值就是该逗号表达式的值。 逗号表达式的结合顺序:自左向右。 逗号运算符的优先级在所有运算符中是最低的。 例如: a=(3+5,3*5,5/3) a=3+5,3*5,5/3 (i=3,i+,+i,i+5),条件运算符,语法:?: 功能:如果表达式1的值是非0的,则其结果是表达式2的值,否则为表达式3的值 例1:printf(“max is %dn”,(ab)

6、?a:b); 常常用条件表达式构成一个赋值语句,例: ch=(ch=a,为什么说条件运算符的结合方向是自右向左的呢?运算的时候明明是自左向右啊,main() int k, num= 30; k =(num 5 ? (num =10 ? 100:200): 500); printf(“%d”, k); ,答案:200,main() int a=4,b=5,c=2, k; k =ab? b+a:bc?b:c; printf(“%d”, k); ,答案:9,结合方向是自右至左的,k =ab? b+a: (bc?b:c);,C运算符优先级.doc 作业 重点提示: =和!=高于位操作 =和!=高于赋值

7、符 算术运算符高于位移运算符 逗号运算符优先级最低,第一讲 C语言基础回顾,C语言概述 C语言的关键字 C语言基本数据类型 C语言的运算符(% + - , ?:) C语言控制语句(switch、break、contiue),学习目标: 了解程序设计的一般方法、结构化程序设计 熟悉顺序结构、简单程序流程图的画法 熟练应用if语句的使用规则以及相应的程序流程 熟练应用switch语句的使用规则及相应的程序流程,for( ) while( ) dowhile( ),9种控制语句,if语句(条件选择语句) if语句的三种形式 形式一: 格式:if (expression) statement 执行过程

8、:,形式二: 格式:if (expression) statement1 else statement2 执行过程:,形式三: 格式:,if ( expr1 ) statement1 else if (expr2 ) statement2 else if (expr3 ) statement3 . else statementn,执行过程:,if 语句是可以嵌套的,见我们资料的23页 if语句在我们以后的项目中是用的很多的控制结构,bool变量与“零值进行比较”,bool变量与“零值进行比较”的if语句怎么写? boll bTestFlag=FALSE; if(bTestFlag=0); if

9、(bTestFlag=1); if(bTestFlag=TRUE); if(bTestFlag=FALSE); if(bTestFlag); if(!bTestFlag); 分析:,float变量与“零值”进行比较,float变量与“零值”进行比较怎么写? float fTestVal = 0.0; A), if(fTestVal = 0.0); if(fTestVal != 0.0); B), if(fTestVal = -EPSINON) 分析:float和double类型的数据都是有精度限制的,直接和0.0比,正确吗? EPSINON为定义好的精度,指针变量与“零值”比较,指针变量与“零

10、值”进行比较的if语句怎么写? int *p=NULL; A), if(p = 0); if(p != 0); B), if(p); if(!p); C) , if(NULL = p); if(NULL != p); 哪一组或是那些组正确呢?,else到底与哪个if配对呢? if(0 = x) if(0 = y) error(); else /program code else始终与同一括号内最近的未匹配的if 语句结合,if语句后面的分号 关于if-else 语句还有一个容易出错的地方就是与空语句的连用; if(NULL != p) ; fun(); 结果是不小心的一个分号导致结果与预想的相

11、差很远,使用if语句的其他注意事项,规则1:先处理正常情况,再处理异常情况。非常重要的一点,把正常情况的处理放在if 后面,而不要放在else 后面。 规则2:确保if和else子句没有弄反。,switch语句(开关分支语句) 一般形式:,switch( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break default: 语句组n+1 ; ,执行过程:,例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); c

12、ase 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); ,运行结果:score为5时,输出: Very good! Good! Pass! Fail! data error!,注意,Switch后面( )内的表达式可以为整型或字符型表达式 整型常量表达式之值必须互不相同 Case和default的出现顺序是任意的 在执行完某个case后面的语句后,将自动执行该语句后面的语句 多个case语句可以共用一组执行语句。 例:switch(n) . case1: case2: x=10; bre

13、ak;,既然有了if else组合,为什么还需要switch、case组合呢? 重申: 每个case语句的结尾绝对不要忘了加break; 最后必须使用default分支,避免忘记进行default处理 case 后面只能是整型或字符型的常量或常量表达式(想想字符型数据在内存是怎么存的)。,case语句,排列 如果所有的case 语句没有明显的重要性差别,按字母或数字顺序排列各条case 语句; 把正常情况放在前面,而把异常情况放在后面; 按执行频率排列case 语句。,case语句,使用 简化每种情况对应的操作; 不要为了使用case 语句而刻意制造一个变量; 把default 子句只用于检查

14、真正的默认情况。,while语句 一般形式:,while(表达式) 循环体语句;,执行流程:,循环,特点:先判断表达式,后执行循环体 说明: 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto 无限循环: while(1) 循环体;,dowhile语句 一般形式:,do 循环体语句; while(表达式);,执行流程:,特点:先执行循环体,后 判断表达式 说明: 至少执行一次循环体 dowhile可转化成 while结构,for语句 一般应用形式:,for(循环变量赋初值;循环条件;循环变量增值

15、) 循环体语句; ,说明: for语句中expr1, expr2 ,expr3 类型任意,都可省略, 但分号;不可省 无限循环: for( ; ; ) for语句可以转换成while结构 空语句:while(getchar()!=n);,循环的嵌套 三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉,(1) while() while() . ,(2) do do while( ); . while( );,(3) while() do while( ); . ,(4) for( ; ;) do while(); while() . ,嵌套循环的跳转,禁止: 从外层跳入内层 跳入同层的另一循环 向上跳转,辅助控制语句 break语句 功能:在循环语句和switch语句中,终止并跳出循 环体或开关体 说明: break只能终止并跳出最近一层的结构 break不能用于循环语句和switch语句之外的任何其它语句之中,continue语句 功能:结束本次循环,跳过循环

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号