《C语言程序设计课件第三章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件第三章.ppt(24页珍藏版)》请在三一办公上搜索。
1、本章的主要内容包括:C语言中的语句 C语言中的控制结构 结构化程序设计方法,第三章 语句及控制结构,回首页,语句是C语言中描述计算过程的最基本单位。由分号;结束。语法:语句在形式上的严格要求语义:每个形式上合法的语句都表示了一种含义,表示了程序执 行时要求进行的一个动作。C语句分类:(1)控制语句,完成选择、循环、转移等功能,共9种。(2)函数调用语句,由一次函数调用加一个分号构成一个语句。如:printf(“hello”);(3)表达式语句,由一个表达式加一个分号构成一个语句。如:a=3;+x;表达式能构成语句是C语言的一个重要特色。任何表达式都可以加上分号而成为语句。C语言也被叫作“表达式
2、语言”。(4)空语句,只有一个;号的语句。(5)复合语句,将语句用组合起来的结构,用于执行一系列语句,与顺序结构对应。语句的书写和注释,3.1 语句,顺序结构:按语句在程序中出现的顺序逐条执行,由这样的语句构成的程序结构是顺序结构。3.2.1 赋值语句和复合赋值语句 3.2.2 数据输入输出 3.2.2.1 字符输入函数getchar getchar()函数从标准输入读入一个字符,没有参数,返回读入字符的ASCII码值(整数),遇文件结束标志返回EOF(EOF 是C系统定义的常数,表示文件结束符,在标准输入上输入文件结束标志方法:CTRL-Z)。3.2.2.2 字符输出函数putchar pu
3、tchar(int c)函数向标准输出写一个字符,输出控制字符时,会变成相应的设备动作。,3.2 顺序结构,3.2.2.3 格式输出函数printf printf()函数在标准输出设备上按指定格式进行输出 1 1.printf函数的一般调用形式 printf(格式描述串,)格式描述串的作用:(1)为参数表中的输出项提供格式说明:由符号“%”和格式描述符组成。如系统规定用d作为int类型的格式描述符。(2)提供需要原样输出的文字或字符:如printf(“sum=%dn”,sum);中“sum=”是希望原样输出的字符,“%d”的位置上输出变量sum的值,最后的“n”使输出换行。格式转换说明的个数与
4、参数表的输出项个数应该相同,且格式描述符要与对应输出项的类型匹配。否则输出的结果无法预料,甚至可能会引起严重的运行错误。printf函数的返回值,是本次调用中输出字符的个数。,3.2 顺序结构,3.2.2.3 格式输出函数printf printf()函数在标准输出设备上按指定格式进行输出 2.printf函数中常用的格式说明 每个格式说明都必须用“%”开头,以一个格式字符作结束。,3.2 顺序结构,3.2.2 数据输入输出3.2.2.4 格式输入函数scanf 1.scanf函数的一般调用形式 scanf(格式描述串,)格式描述串是用双引号括起来的字符串,由“%”符号和格式描述符组成。作用是
5、指定输入时的数据格式。参数表中各输入项用逗号隔开,各输入项只能是合法的地址表达式。格式描述串描述了程序所要求的转换方式,它控制着函数scanf由标准输入读入的过程。scanf函数返回成功完成输入转换的输入项数。2.scanf函数常用格式说明每个格式说明都必须用“%”开头,以一个格式字符作结束。3scanf函数的工作过程 4.scanf函数实例,3.2 顺序结构,3.2.3 复合语句和空语句 3.2.3.1 复合语句 复合语句也称“语句块”,形式如下:语句1;语句2;.,语句n;最后一个语句的分号“;”不能缺少,复合语句内,不仅可以有执行语句,还可以有定义部分,定义部分应该出现在可执行语句的前面
6、。C编译将整个括起来的结构视作一条语句。C语言中复合语句经常用来表示一些控制结构的执行体。如循环结构的循环体、选择结构某一条件的执行部分、函数的执行体等等。3.2.3.1 空语句 只有一个分号的语句叫“空语句”。空语句执行时不产生任何动作,程序中有时需要用空语句来表示存在一条语句。但随意加分号也会导致逻辑上的错误,要特别小心。,3.2 顺序结构,3.3.1 关系运算和逻辑运算3.3.1.1 C语言中的逻辑值语言中规定:(1)用0、1 表示逻辑假和真值;语言没有专门的逻辑值,而是用来表示“真”,用表示“假”。(2)任何基本类型的值都可作为逻辑值使用。所有非0的值被当作“真”使用,而0值被当作“假
7、”使用。3.3.1.2关系运算符和关系表达式 关系运算符C语言的关系运算符共种:(大于)=(大于等于)(小于)=(小于等于)=(等于)!=(不等于)优先级:前四种优先级高于后两种 结合方法:从左向由结合,3.3 选择结构,3.3.1.1 C语言中的逻辑值3.3.1.2关系运算符和关系表达式2.关系表达式由关系运算符将两个表达式连接起来组成的表达式。关系表达式求值只有两种可能的结果:关系成立,关系表达式取值为1,代表“真”;关系不成立,关系表达式取值为0,代表“假”关系表达式计算的注意事项:(1)进行关系运算的两个数据的类型不同,按照算术运算同样的规则进行转换,再比较。(2)C语言中一般不使用连
8、续关系运算符的描述方式。这样的表达式其计算结果往往会出乎人们的预料。(3)关系表达式中经常出现的一个错误是把“”写成“”。,3.3.1 关系运算和逻辑运算,3.3.1.3 条件运算符和条件表达式?:条件运算符是C语言中唯一的三目运算符 表达式1?表达式2:表达式3条件运算符的优先级高于赋值运算,低于关系和算术运算符结合方式:从右向左关系成立,关系表达式取值为1,代表“真”;关系不成立,关系表达式取值为0,代表“假”条件表达式的计算:表达式1先被计算,如果表达式1的值为非0,(条件成立,逻辑为真)就计算表达式2的值并将计算结果作为整个条件表达式的值;如果表达式1的值为0,(条件不成立,逻辑为假)
9、就计算表达式3的值并将计算结果作为整个条件表达式的值;有一部分表达式不参加求值运算,3.3.1 关系运算和逻辑运算,3.3.1.4 逻辑运算符和逻辑表达式 1.逻辑运算符 逻辑运算符:表示逻辑或命题运算的运算符逻辑表达式:逻辑运算符和逻辑量组成的表达式下面三种逻辑运算符:&:逻辑与|:逻辑或!:逻辑非优先级:(1)从高到低为:!(非)&(与)|(或)。(2)&和|的优先级低于关系运算符,高于条件和赋值运算符,!的优先级高于算术运算符。结合方式:从左向右。,3.3.1 关系运算和逻辑运算,3.3.1.4 逻辑运算符和逻辑表达式 2.逻辑表达式求值运算“!”是,表示“否定”;“&”表示“并且”,“
10、|”表示“或者”。它们的运算对象是条件表达式和逻辑量。常用:0表示逻辑假值,1表示逻辑真值(非0)。表3.4 逻辑运算符的运算规则表,3.3.1 关系运算和逻辑运算,!(a&b)=!a|!b!(a|b)=!a&!b 归纳:(1)用逻辑表达式表示复杂条件直观、简捷、可读性好。(2)逻辑表达式计算有时会出现部分表达式不参加运算的情况。,3.3.1.4 逻辑运算符和逻辑表达式 1.逻辑运算符 例 写出判断某一年是闰年和非闰年的逻辑表达式分析:设year是表示年的整型变量,闰年的条件是:year能被4整除,但不能被100整除;或year能被400整除。用逻辑表达式表示:(year%4=0&year%1
11、00!=0)|year%400=0加一个“!”即是用来判断非闰年的条件:!(year%4=0&year%100!=0)|year%400=0),3.3.1 关系运算和逻辑运算,if语句用来构造选择结构,作用是实现对某些操作的选择执行。3.3.2.1 if_else结构 1.语法 if(表达式)语句1 else 语句2else子句与它前面最近、不带else的if配对,与书写格式无关。if(n0)if(n0)if(ab)if(ab)z=a;z=a;else z=b;else z=b;2if_else语句的执行过程,3.3.2 if语句,if语句用来构造选择结构,作用是实现对某些操作的选择执行。3.
12、3.2.2 else_if结构 if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3.else 语句n这种嵌套的if语句序列是实现多分支选择结构的最普通的方法。执行过程,3.3.2 if语句,1.switch语句 switch(表达式)case 常量表达式1:语句1 case 常量表达式2:语句2.case 常量表达式n:语句n default:语句n+12.switch语句的执行过程标号的作用,只是指出选择转移的起点。一方面允许多个case标号连接到同一段代码,提供代码共享的能力。另一方面,又使得正常选择分支case标号后的语句,一定要加入break语句才能
13、实现多分支选择的功能。,3.3.3 switch结构,3.break语句 break称间断语句,作用是控制程序跳出switch语句体或循环体。标号的作用,只是指出选择转移的起点。,3.3.3 switch结构,3.4 循环结构,循环结构用于完成程序中需要重复执行的操作。是结构化程序设计的三种基本结构之一。在C语言中有三种可以构成循环结构的循环语句。3.4.1 while循环 1.语法 while(表达式)循环体 2.while循环的执行过程(1)计算表达式的值,当值为非0时,执行(2);当值为0时,执行(3)。(2)执行循环体中语句,转去执行(1)(3)退出 while循环。,3.4 循环结构
14、,3.4.2 do_while循环1.语法do 循环体while(表达式);括号、分号是必须的。循环体可以是一条语句或复合语句或空语句“;”,do和while表示循环结构的开始和结束,在这种循环结构中要成对使用。2.do_while循环的执行过程(1)执行do后面的循环体。(2)计算while后面括号中的表达式,当值为非0时,转去执行(1);当值为0时,退出do_while循环。,3.4 循环结构,3.4.3 for循环 1.语法for(表达式1;表达式2;表达式3)循环体 2.for循环的执行过程(1)计算表达式1。/*表达式1通常为循环变量赋初值,使用赋值表达式和逗号表达式较多。*/(2)
15、计算表达式2,若其值非0,转(3);若为0,结束循环。/*表达式2控制循环条件*/(3)执行循环体。(4)计算表达式3,转(2)。,3.4.4 控制语句 1.break语句 break;break也可用在循环中,使程序跳出本层循环,提前结束本层循环。2.continue语句 continue;只能用在循环体中,作用是结束本次循环,即跳过本次循环体中其余尚未执行的语句,接着再进行一次循环条件的判定。在while和do_while循环中,continue语句使程序直接跳到循环控制条件的测试部分,在for循环中,遇到continue后,跳过循环体中余下语句,而去对for语句的表达式3求值,然后进行表
16、达式2的条件测试,决定for循环是否执行。,3.4 循环结构,3.4.4 控制语句 3.goto语句 goto语句作用是实现在一个函数体内部的任意控制转移。必须和标号一起使用。形式为:goto 标号标号的形式是一个标号名后跟一个冒号,可以写在任何语句前面。标号名是标识符,在程序中起标记作用,连接某个转移和目的地、不分配空间。现代程序设计理论已经证明使用顺序、选择、循环结构可以描述程序设计中的所有问题,不需要goto语句,使用goto语句写的程序转移随便,可读性差。应该少用和不用goto语句。C语言中使用goto的唯一合理的地方,是从多重循环的内层,直接跳到最外层。,3.4 循环结构,3.4.5
17、 循环结构中常用机制(1)增量、减量运算符(+、-)在循环结构中经常用来改变循环控制变量的值。(2)逗号运算符(,)for语句头部,表达式1中变量赋初值和表达式3中循环变量更新操作中常用。(3)复合赋值 常使用复合赋值操作在循环体内进行累加、累乘、递减等操作。(4)空语句 单独的分号“;”,作为填充,保证语法结构的完整性。(5)无限循环 程序中表示无限循环的常用结构是 while(1)循环体 for(;)循环体。无限循环的循环体内一定有选择结构和break语句以便最终从循环结构中退出来。(6)break、continue、goto3.4.6 循环结构设计实例,3.4 循环结构,第三章 语句及控制结构,使用三种基本结构和它们的组合可以构造各种各样的复杂C程序,本章主要内容是C语言中三种基本结构的语法及使用。包括:顺序结构:赋值、标准输入输出函数和复合语句使用。选择结构:条件、关系、逻辑表达式运算,if、switch语句使用。循环结构:for、while、do_while循环的使用方法。控制语句:break、continue、goto语句的作用和用法。三种基本结构是程序设计的基础,要求熟练掌握它们的使用方法,熟悉各种控制机制的机理。关键点是:关系、逻辑表达式求值;条件、循环语句的执行过程;标准输入的工作过程;控制语句的合理使用。,回本章首页,